1

つまり、スレッドのクォンタム時間が 20 ミリ秒の場合、20 時間の一部 (15 ミリ秒) がコンテキスト スイッチに費やされ、他の時間 (5 ミリ秒) が実行に費やされるのでしょうか?

4

4 に答える 4

0

平均して、コンテキスト切り替えに75%の時間を費やしているOSをダンプします。優先順位の高いスレッドの多くがI/O割り込み/シグナルによって不幸な高速シーケンスで準備され、準備ができているスレッドのセットに「順次」変更が発生する場合にのみ、このような負荷が推移的に発生すると予想されます。

開発者/投稿者がプリエンプティブカーネルを指すときに「クォンタム」や「タイムスライス」などの用語を頻繁に使用するのをやめたほうがよいでしょう。大幅にオーバーロードされたボックスを除いて、ティック割り込みは、他のブロッキングコールをタイムアウトし、一定間隔でスリープする場合にのみ役立ちます。

とにかく、誰がこれの用語として「量子」を思いついたのですか?「クォンタム」は不可分ですが、すべての99.9%の家庭用スレッドは、ほとんどの時間I / Oまたは相互に待機しており、ティック期間未満で実行され、すぐにコアが割り当てられ、準備ができたら実行されます。そして、彼らの「タイムスライス」が上がったという理由だけで、だまされた経験はほとんどありません。

「タイムスライス」は60年代のもののように聞こえますが、2012年ではなく、プリエンプティブカーネルがドライバーの割り込み/シグナルに迅速に応答し、待機していたスレッドをすぐに準備/実行します。

于 2012-06-27T15:21:51.057 に答える
0

.NET はオペレーティング システムではなく、これらすべてのスレッド関連の CLR ライブラリは OS の API の単なるラッパーであるため、「.NET のコンテキスト スイッチ」などはありません。

したがって、質問は次のようなものにする必要があります。「Windows でコンテキスト スイッチにかかる時間は?」

于 2013-10-06T09:41:42.467 に答える
0

実装の詳細です。

Linux では、プロセス/スレッド スケジューラが CPU をスレッドに割り当てると、そのスレッドは実行中と見なされます。カーネル モードからユーザー モードに切り替えて実行するコードは、そのプロセス/スレッドに代わって実行されるカーネル コードと見なされるため、コンテキスト切り替え時間はスレッド/プロセスの実行時間として考慮されます。

于 2012-06-27T11:17:58.423 に答える