オペレーティングシステムにおけるプロセスのスケジューリングについて考える。2つのプロセスAとBは、次の実行系列になっているとし、プロセスがCPUを使用している間は途中で横取り (プリエンプション) されないものとする。
プロセスA 実行20ms、入出力待ち10ms、実行32ms、
入出力待ち10ms、実行5ms
プロセスB 実行5ms、入出力待ち15ms、実行10ms、
入出力待ち30ms、実行16ms
この2つのプロセスの両方が実行を終了するためにかかる時間は、一方のプロセスの入出力待ち中にもう一方のプロセスを実行できない場合 ア msとなり、一方のプロセスの入出力待ち中にもう一方のプロセスを実行できる場合、最短で イ msとなる。ただし、CPUは1台 (シングルコア) であり、プロセスAとBがそれぞれ使用する入出力装置は、同時に独立して動作可能である。
上の に入るべき数値の組合せはどれか。
ア イ
@ 88 76
A 88 77
B 153 86
C 153 88
D 153 118
C
一方のプロセスの入出力待ち中にもう一方のプロセスを実行できない場合は、並列処理できないため、プロセスAとBの実効時間の和になる。
プロセスAは 20+10+32+10+5 = 77ms
プロセスBは 5+15+10+30+16 = 76ms
従って、アは 77+76 = 153msである。
一方のプロセスの入出力待ち中にもう一方のプロセスを実行できる場合は、ある程度並行処理ができる。
■プロセスAが優先の場合
プロセスAの実行20ms後、
プロセスAが入出力待ち10msの間に、プロセスBの実行5msが処理できる。
プロセスAの実行32msが処理される。
また、2回目の入出力待ちの10msの間に、プロセスBの実行10msが処理できる。
さらに、Bの入出力待ち30msの間に、プロセスAの5msが処理できる。
最後にロセスBの実行16msが処理される。
従って、20+10+32+10+30+16 = 118msである。
■プロセスBが優先の場合、
プロセスBの実行5ms後、
プロセスBの入力待ち15msの時に、プロセスAの実行20msが処理される。
プロセスAの入力待ち10msの時に、プロセスBの実行10msが処理される。
プロセスBの入出力30msの間にプロセスAの実行32msが処理される。
さらにプロセスBの実行16msの間にプロセスAの入出力待ち10msが消化され、
最後にプロセスAの実行5msが処理される。
従って、
5+20+10+32+16+5 = 88msである。
イには88msが入る。
W−11 | 目次 | W−13 |