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

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


問題文

三つのタスクの優先度と、各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は、表のとおりである。三つのタスクが同時に実行可能状態になってから、全てのタスクの実行が終了するまでの、CPUの遊休時間は何ミリ秒か。ここで、I/Oは競合せず、OSのオーバヘッドは考慮しないものとする。また、表の()内の数字は処理時間を示す。
基本情報技術者 2013年 春期 午前(科目A) 問18の問題画像

選択肢

1
2
3(正解)
4

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

タスク優先度とCPU遊休時間【午前解説】

正解の理由

全タスク同時に実行可能状態でスタートすると、プリエンプティブな優先度(高→中→低)でCPUが割り当てられます。各タスクの動作は以下の通りであり、I/Oは独立で並列に処理されるため、I/O中のCPUの割当て状況を時系列で追えばCPUの遊休時間が求まります。計算の結果、CPUの遊休時間は合計で3msとなるため、正解は (3)です。

解法ステップ

  1. 各タスクを時刻0に並べ、優先度高→中→低でCPUを割り当て開始。
  2. 各タスクの最初のCPUバースト終了時刻と、その後のI/O終了時刻を計算する。
  3. CPUが他のタスクに割り当てられない時間帯(全タスクがI/O中、かつまだ次のCPUバーストが到着していない時間)を合算する。
  4. 最後に全区間の遊休時間を合計して選択肢と比較する。
具体的な時刻表(ms単位):
  • t=0–3: 高優先度CPU(3) 実行 → 高はt=3でI/O(5) に移行(完了t=8)
  • t=3–5: 中優先度CPU(2) 実行 → 中はt=5でI/O(6) に移行(完了t=11)
  • t=5–6: 低優先度CPU(1) 実行 → 低はt=6でI/O(5) に移行(完了t=11)
  • t=6–8: CPUに実行可能タスクがなく遊休(2ms)
  • t=8–10: 高の第2 CPU(2) 実行(高終了t=10)
  • t=10–11: 再びCPUに実行可能タスクがなく遊休(1ms)
  • t=11–13: 中の第2 CPU(2) 実行
  • t=13–14: 低の第2 CPU(1) 実行(全タスク終了)
    合計遊休時間 = 2 + 1 = 3 ms
(上記より正解は

選択肢別の誤答解説

  • ア: 1 — おそらくt=6–8の2msのみを見て、t=10–11の1msを見落としたケース。I/O復帰のタイミングを最後まで追えていない。
  • イ: 2 — 中央の2ms区間(t=6–8)だけを合算した誤り。最終の高の第2 CPU終了後の短時間の遊休を忘れがち。
  • : 3 — 正答。上の全時刻を正確に追跡した結果。
  • エ: 4 — 過剰に遊休を見積もったケース(例えば、I/Oの並列性を誤って扱い、余分に待ち時間を加算した)。

よくある誤解

  • 「I/Oが並列ならCPUは常に稼働する」と思い込む誤解:I/Oが並列でも、全タスクが同時にI/Oに入っている期間はCPUに実行するタスクがなくなり遊休が発生します。
  • 「優先度順だけ考えていればよい」と考える誤解:優先度だけでなく各段の処理時間(I/Oの終了時刻)がCPUの空き時間を決めるため、時刻追跡が重要です。
  • 「最後のI/Oが終わるまでCPUは働く」と誤認:I/O終了とCPUバーストの到着時刻のずれが遊休時間を生みます。

補足コラム

本問は「優先度スケジューリング」と「CPU/I/Oバーストの時刻追跡」を組み合わせた典型問題です。ポイントは「I/Oが競合しない=同時に複数のI/Oが進行する」ため、I/Oの終了タイミングがCPUの有無を決める点です。実務的には、CPU利用率を上げるためにI/OバウンドとCPUバウンドの混在を活用したスケジューリングが行われますが、試験では時刻を正確に追う練習が重要です。
簡単なPythonによるシミュレーション(参考)
tasks = {
  'H': [(3,'CPU'),(5,'IO'),(2,'CPU')],
  'M': [(2,'CPU'),(6,'IO'),(2,'CPU')],
  'L': [(1,'CPU'),(5,'IO'),(1,'CPU')],
}
# 上の擬似データを基に時刻追跡すれば遊休3msを確認できます(省略)。

FAQ

Q1: I/Oが並列ならCPUは遊休にならないのでは?
A1: I/Oが並列でも「全タスクが同時にI/Oにいる期間」はCPUに実行可能なプロセスが存在せず遊休が発生します。
Q2: プリエンプトがないスケジューリングならどうなる?
A2: 非プリエンプティブなら一度CPUを取ったタスクはI/Oに入るまで続行するため、順序が変わり遊休時間が異なる可能性があります。本問は優先度割当と同時開始が前提です。
Q3: I/Oの競合があったら結果は変わる?
A3: はい。I/Oが競合し待ち列が発生するとI/Oの完了時刻が遅延し、CPUの遊休時間や完了順序が変わります。

関連キーワード: プロセススケジューリング、プリエンプティブ優先度、CPU遊休時間、I/O待ち時間、スケジューリング解析
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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