戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 春期 午前(科目A)16


問題文

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

選択肢

(正解)

🔒 解説は解答すると表示されます

優先度プリエンプト方式【午前解説】

正解の理由

同時に実行可能になった3タスクを「優先度の高いものがCPUを取得し、戻ってきたら低いものをプリエンプトする」前提で時刻0から順に追うと、観察区間(準備状態から3ms経過した時点=時刻3msから、その後7ms間=3–10ms)の各状態は次の通りになります。
  • A(高優先):単独で CPU(2)→I/O(2)→CPU(2) のため、時刻0–2で最初のCPUを使い、2–4でI/O、4–6で最後のCPUを使って完了する。したがって観察区間の3–10msでは 3–4 が I/O、4–6 が CPU、6ms以降は完了(CPU占有なし)。
  • B(中優先):時刻2にCPUを取り2–4の間に CPU を実行(観察区間内では3–4がCPU)。時刻4にAが戻ってきてプリエンプトされ、4–6は待ち、6–7に残り1msのCPUを実行してから7–12でI/Oへ入る(観察区間では7–10がI/O)。
  • C(低優先):A・Bの優先が上位のため観察区間の前半は待ち続け、時刻7–9にCPUを2ms使い、9–11でI/Oを行う(観察区間では7–9がCPU、9–10がI/O)。
この実際の時系列と、図中で「破線=待ち」「実線=実行」「破線注記や重なりはプリエンプトや部分実行を示す」と解釈したときに、選択肢の描き方(A が 3–4 I/O → 4–6 CPU、B が 3–4 CPU→4–6 待ち→6–7 CPU→7–10 I/O、C が 3–7 待ち→7–9 CPU→9–10 I/O(観察区間内))と一致します。したがって選択肢が正しい表現です。

解法ステップ

  1. 初期状態(時刻0)で A,B,C が同時に実行可能とする。優先度は A>B>C、プリエンプトあり。
  2. 各タスクの単独実行パターンを確認:
    • A: CPU2 → I/O2 → CPU2
    • B: CPU3 → I/O5 → CPU2
    • C: CPU2 → I/O2 → CPU3
  3. 時刻0から順に割り当てを決定:
    • 時刻0–2: A(CPU)
    • 時刻2–4: A(I/O)、CPU は空くので B が CPU を開始(B は 3ms 必要)
    • 時刻4: A の I/O 終了により A が CPU を取り戻す(プリエンプト)。B は残り 1ms を保持して待ちへ。
    • 時刻4–6: A(CPU)で完了
    • 時刻6: CPU 空き → B の残り 1ms を優先して割付(時刻6–7)
    • 時刻7: B は I/O(7–12)、CPU 空き → C が CPU を取得(7–9)
    • 以降 C は I/O(9–11)、A は既に完了
  4. 観察区間(3–10ms)に該当する各タスクの状態を抜き出す(上の「正解の理由」参照)。
  5. 選択肢の図が「破線=待ち、重なり=プリエンプト表現」であることを考慮して突き合わせ、唯一一致するのが選択肢であることを確認。

選択肢別の誤答解説

  • ア:A の CPU が 3–6 のように長く占有しているなど、A が I/O→CPU→CPU の時間配分を誤っている。B を 3–6 で I/O とするが、実際は B は最初に CPU を取り 2–4 の CPU 実行があるため不適合。
  • イ:A を 3–4 CPU、4–6 I/O の順にしている(CPU と I/O の順序が逆)。A の個別動作順序を守っていないため不可。
  • :正答(上記参照)。
  • エ:A を 3–4 I/O → 8–9 CPU のように大きく待たせているが、A の総計処理時間やI/O終了時刻と矛盾する。B を 5–10 I/O と長期間 I/O にしている点も実際のプリエンプト順序と一致しない。

よくある誤解

  1. 「図の横軸ラベルと実際の実行区間をそのまま読む」こと:図中の長方形や破線は描画の都合で端点がずれることがあるため、処理時間の合計や前後関係(プリエンプトの有無)で検証する必要があります。
  2. 「高優先度タスクは I/O 中もCPUを占有する」と誤解する:I/O中はCPUを離れるため、他タスクがCPUを使えます。I/O完了時に再び高優先度がCPUを奪う(プリエンプト)点を常に確認してください。

補足コラム

プリエンプティブ優先度スケジューリングを解く際は「イベント駆動」で時刻順にイベント(CPU開始・CPU終了・I/O開始・I/O終了)を書き出すとミスが減ります。観察区間が問題に指定されている場合は、その区間の前に起きたイベントも計算して「区間開始時点の状態(誰がCPUを使っているか、誰が待ちか)」を確定することが重要です。
簡単なメモ化(イベント表)例: 時刻0: A開始(CPU残2), B待, C待
時刻2: A→I/O(2), B開始(CPU残3→実行)
時刻4: A I/O完了→AがCPUを取得(Bはプリエンプト)
時刻6: A終了、B残1でCPU獲得→6–7実行
時刻7: B→I/O、CがCPU獲得(7–9)…
このようにイベントを列挙すると、観察区間3–10の状態が明確になります。

FAQ

Q. 「破線」が図に重なっているときはどう読めばよいですか?
A. 多くの試験図では、破線=待ち(実行可能でCPU割当待ち)、破線注記の重なりは「途中でプリエンプトされた」「その区間は部分的に実行されている/されていない」を示します。必ず処理の総時間と前後関係(いつI/Oに入るか、I/Oの長さ)で確認してください。
Q. 観察区間の開始が「準備状態になって3ms経過後」とあるとき、どこから時間を数える?
A. 「準備状態になった瞬間」を時刻0とし、そこから3ms経過した瞬間を観察区間開始(時刻3ms)と考えます。したがって時刻0からのスケジュールを求めて、3ms時点の状態を導出する必要があります。

関連キーワード: プリエンプティブスケジューリング、優先度割当、プリエンプト、CPUスケジューリング、イベント駆動解析、待ち状態、I/O同期、タイムライン解析
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について