プロセス対。スレッド
1. 序章
このチュートリアルでは、プロセスとスレッドという2つのあいまいな用語を簡単に定義します。 その後、それらの違いを見ていきます。
2. 定義
プロセスとは、プログラムの実行です。プログラム自体、データ、ファイルなどのリソース、OSが保持するプロセス関係情報などの実行情報が含まれます。 OSを使用すると、ユーザーはシステムコールを介してプロセスを作成、スケジュール、および終了できます。
実装できるスレッドには、 kernel レベルのスレッド、ユーザーレベルのスレッド、ハイブリッドスレッドの3種類があります。
3. プロセスとスレッドの違い
スレッドとプロセスが別々のエンティティであると考える理由はありませんが、
3.1. プロセスのいくつかの特定の特性
プロセスは、データや情報を共有しないという点で独特です。 それらは分離された実行エンティティです。
複数のプロセスを作成するには、個別のシステムコールを使用する必要があります。 さらに、プロセス管理にはより多くのシステムコールが必要です。
最後に、複数のプロセスと連携するには、プロセス間通信( IPC )メカニズムを使用する必要があります。 この状況は、システムコールの数の増加にもつながります。
3.2. スレッドのいくつかの特定の機能
プロセスとは異なり、スレッドはデータと情報を共有します。ただし、スレッドには独自のスタックがあります。
1つのシステムコールを使用するだけで、複数のスレッドを作成できます。 さらに単純化するために、スレッド間の通信を維持するためにIPCなどの追加のメカニズムが必要ないため、スレッド管理にはシステムコールがほとんどまたはまったく必要ありません。
3.3. プロセスとスレッドの主な違い
4. プロセスではなくスレッドを使用することの長所と短所
スレッドグループは、同じプロセス内で実行されるスレッドのセットです。 前に述べたように、それらは同じメモリを共有します。 したがって、同じグローバル変数、同じファイル記述子のセット、および同じヒープメモリにアクセスできます。
これらのスレッドはすべて並行して実行されます。 タイムスライスを使用するか、マシンに複数のプロセッサがある場合は、真に並列に使用します。
プロセスグループの代わりにスレッドグループを使用する利点の1つは、多くの操作を並行して実行できることです。これにより、イベントが到着したときに処理できます。
たとえば、データベースクエリを処理するスレッドとユーザーインターフェイスを処理するスレッドが1つずつある場合、ユーザー入力に応答しながら、ユーザーが要求するクエリを実行できます。
プロセスグループよりもスレッドグループを使用するもう1つの利点は、コンテキストの切り替えに関連しています。 スレッド間のコンテキスト切り替えは、プロセス間のコンテキスト切り替えよりもはるかに高速です。
プロセスとスレッドの関係と違いを見てみましょう。
グループ内のスレッドは同じメモリスペースを使用するため、いずれかのスレッドがそのメモリの内容を破損すると、他のスレッドの内容も破損する可能性があります。 プロセスに関しては、OSは通常、プロセスを相互に保護します。プロセスの1つが自身のメモリ空間を破壊しても、他のプロセスは影響を受けません。
スレッドよりもプロセスを使用するもう1つの利点は、プロセスを異なるマシンで実行できることです。一方、スレッドは通常、同じマシンで実行する必要があります。
5. 結論
この記事では、プロセスとスレッドという重要な用語について説明しました。 並行性と並列性に関するこれら2つの基本的なエンティティの違いについて説明しました。