これはオペレーティング システムに依存していることはわかっていますが、最新のオペレーティング システムでは、同じ優先度のスレッド/プロセスに等しいタイム スライスが与えられていますか、それとも他の要因が関係していますか?
2 に答える
スレッドがI/Oを実行している場合、同期メカニズムを待機している場合、またはスリープ状態になる場合は、直接計算を実行する場合に使用するタイムスライスよりも少ない(場合によっては多い)使用が可能です。OSは、同じスレッド/プロセスの優先度を持つスレッドに同じクォンタムを与えるように最善を尽くしますが、実際には、与えられる実際の時間は異なる場合があります。
たとえば、終了イベントを待機するために実質的に(壁の)時間全体を費やすスレッドは、同じ量の計算を行う同じ優先順位のスレッドよりも、平均して(実行全体にわたって)少ない時間しか与えられません。 (壁)時間の。
In Linux for equal-priority processes, the preemptive scheduler
runs the process waiting the longest.
In Windows it's FIFO queue at each priority level and a thread
can switch priority level queues:
– if thread interrupted because time slice is up, priority lowered
– if interrupted to wait on I/O event, priority raised
– favors I/O-bound over CPU-bound threads
– for I/O bound threads, priority raised more for interactive
waits (e.g. keyboard, display) than for other I/O (e.g. disk)