ホームページ  >  記事  >  バックエンド開発  >  PHPのスレッドとプロセスの違い

PHPのスレッドとプロセスの違い

(*-*)浩
(*-*)浩オリジナル
2019-09-16 13:58:304144ブラウズ

PHPのスレッドとプロセスの違い

#1. プロセスとは

プロセスとは、プログラム実行のインスタンスであり、プロセスは、CPU やメモリなどのリソースを割り当てることができます。通常、プロセスには命令セットとシステム リソースが含まれます。命令セットはコードであり、システム リソースには CPU、メモリ、I/O などが含まれます。 (推奨学習:

PHP プログラミングの入門から習熟まで )

プロセスとは、データセット内のプログラムの動的な実行プロセスです。単に「実行中のプログラム」として理解できます。これは、CPU リソースの割り当てとスケジューリングのための独立したユニットです。

プロセスは通常、プログラム、データ セット、プロセス制御ブロックの 3 つの部分で構成されます。私たちが作成するプログラムは、プロセスが完了する必要がある機能とその完了方法を記述するために使用されます。データ セットは、プログラムが実行中に使用する必要があるリソースです。プロセス制御ブロックは、プロセスの外部特性を記録するために使用されます。 、プロセスの実行変更プロセスを記述し、システムのプロセスの制御と管理に使用できます。これは、システムがプロセスの存在を感知する唯一の兆候です。

このプロセスの制限は、作成、キャンセル、切り替えのオーバーヘッドが比較的高いことです。

2. スレッドとは何ですか?

スレッドはプロセスの実行ストリームです。スレッドはシステム リソースを割り当てることはできません。プロセスの一部であり、実行されます。プロセスよりも独立して小さい単位。

説明: プロセスには 2 つの特性があります: 1 つはリソースの所有権であり、もう 1 つはスケジューリング実行 (命令セット) です。スレッドはスケジューリング実行の一部であり、そのパスを参照します。プロセス実行プロセス (プログラム実行とも呼ばれます)。スレッドは軽量プロセスと呼ばれることもあります。

スレッドはプロセスの後に開発される概念です。スレッドは軽量プロセスとも呼ばれ、CPUの基本的な実行単位であり、プログラム実行プロセスの最小単位であり、スレッドID、プログラムカウンタ、レジスタセット、スタックから構成されます。プロセスには複数のスレッドを含めることができます。

スレッドの利点は、プログラムの同時実行のオーバーヘッドが軽減され、オペレーティング システムの同時実行パフォーマンスが向上することです。欠点は、スレッドが独自のシステム リソースを持たず、必要なリソースのみを持つことです。プロセスの各スレッドは、プロセスが所有するシステム リソースを共有できます。プロセスをワークショップにたとえると、スレッドはワークショップのワーカーに似ています。ただし、一部の排他リソースにはロック機構があり、扱いを誤ると「デッドロック」が発生する可能性があります。

プロセスとスレッドの違い

(1) プロセスはリソース割り当てとスケジューリングの独立した単位ですが、スレッドは CPU スケジューリングの基本単位です

(2) 同じプロセスには複数のスレッドを含めることができ、スレッドはプロセス全体のリソース (レジスタ、スタック、コンテキスト) を共有します。スレッドは 1 つのプロセスにのみ属することができ、プロセスは複数のスレッドを持つことができます。プロセスには少なくとも 1 つのスレッドが含まれます

(3) プロセスの作成は fork または vfork を呼び出し、スレッドの作成は呼び出しを呼び出しますpthread_create.プロセス終了後、そのプロセスが所有するすべてのスレッドは破棄され、スレッドの終了は同じプロセス内の他のスレッドの終了には影響しません

(4) スレッドは軽量プロセスであり、その作成と破棄が必要 プロセスに比べて時間が大幅に短く、CPU がスレッドに割り当てられ、実際にスレッドが CPU 上で実行されます。

(5) スレッドで実行する場合は、通常、同じプロセスのすべてのリソースを共有するため、同期と相互排他が必要です。

(6) スレッドには独自のプライベート属性 (TCB、スレッド ID、レジスタ、ハードウェア コンテキスト、およびプロセスには、プロセス制御ブロック PCB という独自のプライベート属性もあります。これらのプライベート属性は共有されず、プロセスまたはスレッドを識別するために使用されます

以上がPHPのスレッドとプロセスの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。