web-dev-qa-db-ja.com

Windowsスケジューラは、同じ長さのクォンタムをスレッドに割り当てますか?

Windowsカーネルディスパッチャーがスレッドに割り当てるタイムスライス(クォンタム)は、すべてのスレッドで同じ長さですか、それともLinuxのようにスレッドの優先度に基づいてクォンタムのサイズを決定しますか?

3
user49786

Windows NTの時代以来、優先度の高いアプリケーションは、たとえばフォアグラウンドスレッドの場合、より大きな量を持っています。

0から31までの32の優先度レベルが定義され、優先度0から15は「通常の」優先度であり、優先度16から31はソフトリアルタイム優先度であり、割り当てる特権が必要です。 0はオペレーティングシステム用に予約されています。ユーザーは、これらの優先順位の5つを選択して、タスクマネージャーアプリケーションから、またはスレッド管理APIを介して実行中のアプリケーションに割り当てることができます。カーネルは、I/OとCPUの使用率、およびインタラクティブであるかどうか(つまり、人間からの入力を受け入れて応答するかどうか)に応じてスレッドの優先度レベルを変更し、インタラクティブおよびI/Oで制限されたプロセスの優先度を上げ、インタラクティブアプリケーションの応答性を高めるためのCPUバウンドプロセス

Vistaでは、スケジューラは最新のプロセッサのサイクルカウンタレジスタを利用し、スレッドがクロックティックごとに使用するサイクル数を見積もることができます。このようにして、スケジューラーはCPU時間をはるかに公平に分割できます。スレッドは、中断された後、別のタイムスライスで実行できますが、Vistaの前は、スケジューラーは、中断されたスレッドがそのタイムスライス全体で実行されていると想定していました。 (これにより、中断の多いスレッドの優先度が間接的に高くなります。)Vistaは、ディスクデフラグツールやその他のプログラムがフォアグラウンド操作に干渉しないように、I/Oキューに優先度スケジューラも使用します。

出典: wikipedia SchedulingVista Kernel Improvements

1
harrymc