あなたの問題は、IOによってブロックされたときにスケジューラの切り替えについて何も言わないので、あなたが指定した答えは正しいとは限りません。プロセスがIOによってブロックされている場合、CPUが無駄になるという事実は考慮されていません。のは、2つのプロセスで例を見てみましょう:
repeat floor(T/Q) times:
Process 1 runs (Q units of time)
Context switch to process 2 (S units of time)
Process 2 runs (Q units of time)
Context switch to process 1 (S units of time)
if T mod Q > 0
Process 1 runs (T mod Q units of time) then blocks to IO
CPU is idle (Q - T mod Q units of time)
Context switch to process 2 (S units of time)
Process 2 runs (T mod Q units of time) then blocks to IO
CPU is idle (Q - T mod Q units of time)
Context switch to process 1 (S units of time)
Total time elapsed = 2(Q+S)*ceiling(T/Q)
Total time processes were running = 2T
Efficiency = T/((Q+S)*ceiling(T/Q))
スケジューラスイッチ場合、プロセスがブロックされると、その後:
repeat floor(T/Q) times:
Process 1 runs (Q units of time)
Context switch to process 2 (S units of time)
Process 2 runs (Q units of time)
Context switch to process 1 (S units of time)
if T mod Q > 0
Process 1 runs (T mod Q units of time) then blocks to IO
Context switch to process 2 (S units of time)
Process 2 runs (T mod Q units of time) then blocks to IO
Context switch to process 1 (S units of time)
Total time elapsed = 2T + 2*S*ceiling(T/Q)
Total time processes were running = 2T
Efficiency = T/(T+S*ceiling(T/Q))
だから我々がブロックされたときにスケジューラが切り替わると仮定した場合、あなたが持っている答え天井()部分が欠落しています。 Tが常にQの倍数であると仮定すれば、それは必要でもありません。あなたの問題がそれについて何と言っているのかは分かりません。
1つのプロセスの観点から見ると、コンテキストスイッチをダブルカウントしたと思います。複数のプロセスがスケジュールされていると考えると、実行されたすべての量子に対して1つのコンテキストスイッチが必要であるという事実がより明確になります。
私は説明を得ることができる場所からのリンク、私は、同じ質問を持っているあなたは私にいくつかの参照をお願いでき... – Rupesh