平成22年度 秋期 午前 問18
ソフトウェア
タスクに関する問題
五つのタスク A 〜 E の優先度と,各タスクを単独で実行した場合の CPU と入出力装置(I/O)の動作順序と処理時間は,表のとおりである。優先度“高”のタスク A と B 〜 E のどのタスクを組み合わせれば,組み合わせたタスクが同時に実行を開始してから,両方のタスクの実行が終了するまでの間の CPU の遊休時間をゼロにできるか。ここで,I/O は競合せず,OS のオーバヘッドは無視できるものとする。また,表の( )内の数字は処理時間を表すものとする。
〔タスクの優先度と単独実行時の動作順序・処理時間(ミリ秒)〕
タスク A(優先度 高)… CPU(3) → I/O(3) → CPU(3) → I/O(3) → CPU(2)
- アタスク B(優先度 低)… CPU(2) → I/O(5) → CPU(2) → I/O(2) → CPU(3)
- イタスク C(優先度 低)… CPU(3) → I/O(2) → CPU(2) → I/O(3) → CPU(2)
- ウタスク D(優先度 低)… CPU(3) → I/O(2) → CPU(3) → I/O(1) → CPU(4)
- エタスク E(優先度 低)… CPU(3) → I/O(4) → CPU(2) → I/O(5) → CPU(2)
答えと解説を見る
✓ これが正解ウタスク D(優先度 低)… CPU(3) → I/O(2) → CPU(3) → I/O(1) → CPU(4)
解説
優先度の高いタスクが空ける窓に、相手を収めます。
優先度が高いタスクは待たされないので、その時間割は相手によらず確定します。ですから、まずそのタスクを単独で動かしたときの並びを書き出し、入出力を行っている間、つまり処理装置が空く時間の窓を取り出します。この問では窓が 2 つあり、どちらも 3 ミリ秒です。遊休をなくすには、相手のタスクが最初に処理装置を使う時間と、次に使う時間が、それぞれの窓にちょうど収まる必要があります。どちらかが窓より短ければ、その差がそのまま空き時間になります。この条件で 4 つを見比べると、2 つの処理時間がどちらも 3 ミリ秒の組合せだけが残ります。残った 1 つは最後まで通しでなぞって確かめます。窓に順に収まり、優先度の高い側が 14 ミリ秒で終わったあとも残りの処理が続き、18 ミリ秒まで処理装置は空きません。処理時間の総和 18 が終了時刻と一致することも、遊休がないことの言い換えになります。
ほかの選択肢はなぜ違うのか
- アタスク B(優先度 低)… CPU(2)…:最初に処理装置を使う時間が 2 ミリ秒しかなく、3 ミリ秒の窓に 1 ミリ秒の余りが出ます。その余りがそのまま空き時間になるため、条件を満たせません。
- イタスク C(優先度 低)… CPU(3)…:最初の時間は窓に収まりますが、2 度目に使う時間が 2 ミリ秒で、後ろの窓に 1 ミリ秒の余りが残ります。片方だけ合っても、両方合わなければ空きは消えません。
- エタスク E(優先度 低)… CPU(3)…:最初の時間は窓に合うものの、2 度目に使う時間が 2 ミリ秒で、後ろの窓に 1 ミリ秒の余りが出ます。入出力の時間が長いことも、後半のかみ合わせを助けません。
出典:平成22年度 秋期 応用情報技術者試験 午前 問18
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)