2011-07-28 3 views
0

スレッドに対するカーネルレベルのサポートがないとします。プロセスには10個のスレッドが実行され、そのうちの1つはI/Oを要求します。pthreadsライブラリでI/Oを要求しているユーザスレッドに関して

phreadライブラリは、カーネルへのI/O要求をすぐに宣言しますか、またはreadyキュー内のスレッドの実行を開始しますか?

(I/O要求が宣言されている場合は、CPUから先取りされるため、I/O集約タスクではマルチスレッドが役に立たなくなります)。

答えて

0

最初に、「実行中」のスレッドは10個ありますが、実際にはそのうちの1つだけが毎回アクティブになっていると思います。そして、この並行して走っている錯視を作るために文脈の切り替えが起こる。

したがって、実行中の実際のスレッドのみがカーネルに入出力要求を発行できます。 I/Oをブロックしている場合は、システム全体がI/O応答を待っています。 ノンブロッキングI/Oの場合、カーネルは次のレディスレッドに切り替えて実行を継続します.I/Oが終了すると、前のスレッドをレディキューに再び戻すことができることをカーネルに通知する割り込みが生成されます。

しかし、I/O集約タスクは実際には遅いです。

関連する問題