マナビング基本情報技術者

優先度付きスケジューリングで処理順はどう決まるか

基本情報技術者試験 平成30年度春期 午前 問16 / ソフトウェア › オペレーティングシステム

過去問にチャレンジ

平成30年度春期 午前 問16

三つのタスクA~Cの優先度と、各タスクを単独で実行した場合のCPUと入出力(I/O)装置の動作順序と処理時間は、表のとおりである。A~Cが同時に実行可能状態になって3ミリ秒経過後から7ミリ秒間のスケジューリングの状況を表したものはどれか。ここで、I/Oは競合せず、OSのオーバヘッドは考慮しないものとする。また、表中の( )内の数字は処理時間を表すものとし、解答群の中の“待ち”は、タスクが実行可能状態にあり、CPUの割当てで待ちであることを示す。

平成30年度春期 午前 問16の図
  1. ア
    平成30年度春期 午前 問16の図(選択肢ア)
  2. イ
    平成30年度春期 午前 問16の図(選択肢イ)
  3. ウ
    平成30年度春期 午前 問16の図(選択肢ウ)
  4. エ
    平成30年度春期 午前 問16の図(選択肢エ)

会話形式の解説

講師講師
まず、I/O中のタスクはCPUを使わないことと、I/Oが終わった時点で優先度を比べ直すことに注目します。
受験者受験者
優先度が最も高いAが、最初から続けてCPUを使うと考えてしまいました。
講師講師
Aは開始から2ミリ秒で最初のCPU処理を終え、時刻2から4までI/Oを行います。したがって、時刻3から4のCPUはBが使います。
受験者受験者
では、時刻3から5までAがCPUを使う図は、I/O中の区間を取り違えているのですね。
講師講師
そのとおりです。時刻4にAのI/Oが終わると、実行可能になったAの優先度をBと比べ直します。Aのほうが高いので、BのCPU処理を中断してAに割り当てます。
受験者受験者
Bは時刻2から4までに2ミリ秒使ったので、CPU処理はあと1ミリ秒残りますね。
講師講師
はい。Aは時刻4から6まで最後のCPU処理を行って完了します。その後、Bが時刻6から7まで残りの1ミリ秒を処理し、I/Oに入ります。
受験者受験者
時刻4から6にCがCPUを使う図も、戻ってきたAの優先度を見落としていますね。
講師講師
はい。Aを時刻4から7までCPU待ちにしてBやCへ割り当てる図も、同じ理由で誤りです。
受験者受験者
BがI/Oに入る時刻7からは、CがCPUを使えますか。
講師講師
Cが時刻7から9までCPUを使い、時刻9からI/Oに入ります。Aが3から4にI/O、4から6にCPU、Bが6から7にCPU、Cが7から9にCPUとなるウの図が一致します。
受験者受験者
I/O中とCPU待ちを分けて見て、I/O終了時に優先度を比べ直し、中断したCPU処理は残り時間から再開すればよいのですね。

まとめ

正解はウです。Aは時刻3から4までI/O中で、終了後は優先度に従って時刻4から6までCPUを使います。中断されたBは時刻6から7まで残り1ミリ秒のCPU処理を行い、続いてCが時刻7から9までCPUを使います。I/O中とCPU待ちを区別し、I/Oが終わるたびに優先度を比べ直すことが判断の鍵です。

解答・解説

正解はウです

この問題のテーマ

優先度に従ってCPUを割り当て、I/O中のタスクとCPUの割当てを待つタスクを区別できるかを問う問題です。

解き方の考え方

開始から2ミリ秒は優先度が最も高いAがCPUを使い、その後2ミリ秒間のI/Oに入ります。その間にBがCPUを使い始めますが、時刻4にAのI/Oが終わるので、優先度を比べ直します。CPU処理の残り時間を引き継ぎながら、時刻10まで追います。

選択肢ごとの解説

  1. ×ア
    アは時刻3~5にAがCPUを使う図です。しかし時刻3~4のAは、先に始めたI/Oの途中です。この区間のCPUはBに割り当てられます。
  2. ×イ
    イは時刻3~4にAがCPUを使い、時刻4~6にCがCPUを使う図です。時刻3~4のAはI/O中であり、時刻4にI/Oを終えた後は、Cより優先度の高いAがCPUを使います。
  3. ○ウ
    Aは時刻3~4にI/Oを続け、4~6に最後のCPU処理2ミリ秒を行って完了します。Bは時刻4に中断され、6~7に残り1ミリ秒のCPU処理を終えてI/Oに入ります。続いてCが7~9にCPUを使い、9からI/Oに入るため、図の各区間と一致します。
  4. ×エ
    エはI/Oを終えたAを時刻4~7にCPU待ちとし、その間にBとCへCPUを割り当てる図です。時刻4にはAが実行可能状態に戻り、両者より優先度が高いため、AがCPUを取得します。

POINT

  • I/O中のタスクはCPUを使わないので、ほかの実行可能なタスクへCPUを割り当てます。
  • I/Oが終わった時点で優先度を比べ直します。
  • CPU処理を中断されたタスクは、残りの処理時間から再開します。

※出典:平成30年度春期 基本情報技術者試験 午前 問16(一部改変)