軽量プロセスとスレッドの違いは何ですか? 質問する

軽量プロセスとスレッドの違いは何ですか? 質問する

私はその質問に対する答えを見つけたここしかし、回答の中には理解できないアイデアがいくつかあります。たとえば、軽量プロセスは、その論理アドレス空間を他のプロセスと共有すると言われています。これはどういう意味ですか? 2 つのスレッドで同じ状況が理解できます。両方とも 1 つのアドレス空間を共有するため、両方とも bss セグメントから任意の変数を読み取ることができます (例)。しかし、異なる bss セクションを持つさまざまなプロセスが多数あり、それらすべてを共有する方法がわかりません。

ベストアンサー1

ここでの回答が正しいかどうかはわかりませんので、私のバージョンを投稿します。

プロセス - LWP (軽量プロセス) とユーザー スレッドには違いがあります。プロセス定義は多かれ少なかれ知られているため、ここでは脇に置いて、 に焦点を当てますLWP vs user threads。LWP は、基本的に今日スレッドと呼ばれるものです。元々、ユーザー スレッドとは、アプリケーション自体によって管理され、カーネルはそれについて何も知らないスレッドを意味していました。一方、LWP は、カーネルによるスケジュールと実行の単位です。

例: システムで 3 つの他のプロセスが実行されており、スケジュールは優先順位のないラウンドロビンであると仮定します。また、プロセッサ/コアは 1 つあります。

オプション11 つの LWP を使用するユーザー スレッドが 2 つあります。つまり、OS の観点からは、スケジューリング ユニットは 1 つあることになります。合計で 4 つの LWP が稼働しています (他の 3 つ + 自分の 1 つ)。LWP は合計 CPU 時間の 1/4 を取得し、ユーザー スレッドが 2 つあるため、それぞれが合計 CPU 時間の 1/8 を取得します (実装によって異なります)。

オプション22 つの LWP があります。OS の観点からは、2 つのスケジューリング ユニットがあります。合計で 5 つの LWP が実行されています。LWP はそれぞれ合計 CPU 時間の 1/5 を取得し、アプリケーションは CPU の 2/5 を取得します。

もう一つの大まかな違いは、LWP には pid (プロセス ID) がありますが、ユーザー スレッドにはありません。

何らかの理由で、名前が少し混乱し、LWP をスレッドと呼ぶようになりました。

他にも違いは確かにありますが、スライドを参照してください。http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt

編集:

投稿した後、私が書くよりも英語が上手で、すべてをより詳細に説明している良い記事を見つけました。http://www.thegeekstuff.com/2013/11/linux-process-and-threads/

おすすめ記事