応用情報技術者 2017年 春期 午前2 問13
問題文
CPUと磁気ディスク装置で構成されるシステムで、表に示すジョブA, Bを実行する。この二つのジョブが実行を終了するまでのCPUの使用率と磁気ディスク装置の使用率との組合せのうち、適切なものはどれか。ここで、ジョブA, Bはシステムの動作開始時点ではいずれも実行可能状態にあり、A, Bの順で実行される。CPU及び磁気ディスク装置は、ともに一つの要求だけを発生順に処理する。ジョブA, BともCPUの処理を終了した後、磁気ディスク装置の処理を実行する。


選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
CPUと磁気ディスクの利用率【午前2解説】
正解の理由
ジョブA, Bの実行順(AのCPU → Aの磁気ディスク → BのCPU → Bの磁気ディスク)と各処理時間から、全体の終了時刻(=両ジョブが完了するまでの経過時間)は25秒になります。CPUが実際に稼働している合計時間はAのCPU(3s) とBのCPU(12s) の合計15秒、磁気ディスクが稼働している合計時間はAの磁気ディスク(7s) とBの磁気ディスク(10s) の合計17秒です。したがってCPUの使用率は 、磁気ディスクの使用率は となり、選択肢のうち イ の組合せと一致します。
解法ステップ
- ジョブと処理順を整理する
- A: CPU 3s → Disk 7s
- B: CPU 12s → Disk 10s
両ジョブともシステム開始時に実行可能で、Aが先にCPUを使う。CPU・磁気ディスクはそれぞれ一つずつ順番に処理する。
- ガントチャート(時刻図)を描く(主要時刻のみ)
- t=0–3: CPUがAを実行(CPU稼働)
- t=3: AがCPU終了→ディスク要求発生。ディスクは空きなのでt=3–10でAのディスク処理(ディスク稼働)。同時にCPUはBを開始。
- t=3–15: CPUがBを実行(3+12=15)
- t=10: Aのディスク終了 → ディスクはt=10–15の間は空き(待ち)
- t=15: BがCPU終了→ディスク要求発生。ディスクは空きなのでt=15–25でBのディスク処理(ディスク稼働)
- 最終完了はt=25(Bのディスク終了)
- 各資源の稼働合計を計算する
- CPU稼働時間 = 3 + 12 = 15秒 → 使用率 =
- 磁気ディスク稼働時間 = 7 + 10 = 17秒 → 使用率 =
- 選択肢と比較して一致するのは イ
(簡易時刻図)
0 —3—10—15—25
CPU: [A:0–3][B:3–15](稼働合計15)
Disk: [A:3–10] 空き10–15 [B:15–25](稼働合計17)
CPU: [A:0–3][B:3–15](稼働合計15)
Disk: [A:3–10] 空き10–15 [B:15–25](稼働合計17)
選択肢別の誤答解説
- ア(CPU 0.47 / Disk 0.53)
この比率はCPU稼働15s、Disk稼働17sを合計32秒として割った値(, )に対応します。つまり「全処理時間を単純に3+7+12+10=32秒とし、CPUとディスクは全く重ならず直列に実行される」と誤って仮定した場合の値です。実際はCPUとディスクは一部並行動作するため全体は25秒となり、この仮定は誤りです。 - ウ(CPU 0.79 / Disk 0.89)
これらは共に総経過時間を約19秒と仮定した場合の値(, )。総経過時間が19秒ではBの磁気ディスク処理(CPU終了後に10秒)が終わらず、与えられた順序と処理時間を満たせません。つまり前提となるスケジュールが現実の制約に反しています。 - エ(CPU 0.88 / Disk 1.00)
磁気ディスク使用率が1.00ということは「システム稼働期間中、磁気ディスクが常に稼働していた」と仮定していることになります。磁気ディスク合計稼働17sに対して総経過時間が17sとするとCPUの合計15sをその期間に収める必要がありますが、Bのディスク処理はBのCPU終了(t=15)後に始まるためディスクはt=10–15に空く期間が生じ、磁気ディスクが常に稼働することは不可能です。さらに最終完了時刻は25秒より小さくできません。
よくある誤解
- 全処理時間を単純合算する(3+7+12+10=32)と考えてしまう。CPUとディスクは並行して動作できる時間帯があるため、合算は誤り。
- ディスク要求はCPU終了と同時に即処理されるが、順番待ちや前の処理完了を無視して「すぐ終わる」と見なすミス。今回のようにAのディスクが先に来ている場合、BのディスクはBのCPU完了後まで開始できない。
- 最終完了時刻(makespan)を誤って小さく見積もると使用率が過大評価される。まずガントチャートで最終完了時刻を確定すること。
補足コラム
- 一般にリソースの使用率(稼働率)Uは「その資源が稼働している合計時間 ÷ 観測期間(ここでは全ジョブ完了まで)」で求めます。並列性や待ち時間の有無が総観測期間を短くするため、ガントチャートで並行箇所とアイドル期間を可視化するのが確実です。
- 順序制約(CPU→ディスク)や先着順処理は待ち時間を生み、観測期間に影響するため、特にI/Oを伴うジョブ群ではガントチャート作成を習慣づけるとミスが減ります。
FAQ
Q1: なぜ総経過時間が25秒になるのですか?
A1: 最後に終了する処理はBの磁気ディスク(BのCPU終了はt=15、その後ディスク10s)で、15+10=25秒となるためです。
A1: 最後に終了する処理はBの磁気ディスク(BのCPU終了はt=15、その後ディスク10s)で、15+10=25秒となるためです。
Q2: CPUと磁気ディスクは常に並列に動けますか?
A2: 物理的には並列に動けます(CPUがある間にディスクも動くことがある)が、ジョブの依存関係(CPU終了→ディスク要求)や先着順処理のため、全ての処理が常に重なるわけではありません。今回の例ではディスクがt=10–15の間アイドルになります。
A2: 物理的には並列に動けます(CPUがある間にディスクも動くことがある)が、ジョブの依存関係(CPU終了→ディスク要求)や先着順処理のため、全ての処理が常に重なるわけではありません。今回の例ではディスクがt=10–15の間アイドルになります。
Q3: 使用率は少数第何位まで求めればよいですか?
A3: 試験では小数第2位(例0.60, 0.68)の表記が一般的です。四捨五入の指示があれば従ってください。
A3: 試験では小数第2位(例0.60, 0.68)の表記が一般的です。四捨五入の指示があれば従ってください。
関連キーワード: 稼働率、利用率計算、ガントチャート、リソース競合、待ち行列、I/O待ち、処理順序、並行実行

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

