多対多スレッドモデルの各同時システムコールにLWP(Lightweight Process)が必要なのはなぜですか?

多対多スレッドモデルの各同時システムコールにLWP(Lightweight Process)が必要なのはなぜですか?

軽量水圧ユーザースレッドとカーネルスレッドの間に位置するデータ構造で、ユーザースレッドライブラリに仮想プロセッサとして表示されます。したがって、多対多スレッドモデルに必要な最小LWP数は、同時ブロックシステムコールの数です。

なぜこれが起こるのか説明してください。

ベストアンサー1

軽量プロセス(UnixおよびUnixファミリー)は、単一のカーネルスレッドを介してユーザースペースで実行され、同じユーザープロセス内の他のLWPとアドレススペースとリソースを共有するプロセスです。

システムコールは、ユーザー空間でのカーネル関数への呼び出しです。ユーザープロセスがシステムコールを実行すると、その呼び出しはユーザープロセス/スレッドに関連付けられているLWPによって処理され検索されます。通話の処理中にブロックされましたカーネルで(LWPに関連付けられているカーネルスレッドを介して)呼び出しが解決されると、カーネルスレッドとLWPは再びアイドル状態になります。

だからこそ最低限度で多対多スレッディングモデルでは、必要なLWPの数は同時実行量です。ブロックするシステムコール、ブロックシステムコールとLWPは1:1に関連付けられているため(ユーザースレッドのブロックシステムコールが含まれている間はLWPは他の操作を実行できません)

おすすめ記事