戦国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 情報処理技術者試験対策アプリ

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