基本情報技術者 2011年 春期 午前(科目A) 問18
問題文
CPUが1台で、入出力装置(I/O)が同時動作可能な場合の二つのタスクA, Bのスケジューリングは図のとおりであった。この二つのタスクにおいて、入出力装置がCPUと同様に、一つの要求だけを発生順に処理するように変更した場合、両方のタスクが終了するまでのCPU使用率はおよそ何%か。

選択肢
ア:43
イ:50
ウ:60(正解)
エ:75
🔒 解説は解答すると表示されます
CPUとI/Oの排他スケジューリング【午前解説】
正解の理由
図の目盛1つを1単位とすると、タスクAは「CPU 2 → I/O 8 → CPU 3 → I/O 4 → CPU 3」、タスクBは「CPU 2 → I/O 4 → CPU 2 → I/O 4 → CPU 3」です(元の図ではBは最初の2単位、Aの実行中に待っています)。入出力装置が一度に一つの要求しか処理せず、発生順に処理するように変えると、両方のタスクが終わるのは時刻25で、その間のCPUの稼働時間は両タスクのCPU時間の合計 単位です。よってCPU使用率は 、すなわち ウ の60%が正しいです。
解法ステップ
- 図の目盛で各ブロックの長さを読み取る(上の値)。CPU時間の合計はA=8、B=7で15単位。
- I/Oが1台で発生順(FIFO)に処理される場合の時系列を追う(I/O使用中の要求は待ち行列に入る)。
- 時刻ごとにCPUが誰を実行しているか、I/Oが誰を処理しているかを並べて書く。
- 両タスクが終わる時刻(25)でCPUの稼働時間15を割る:。
- 百分率に直して60%とする。 具体的な時刻スケジュール(単位は図の目盛)
- 0–2: AのCPU(CPU稼働)。Bは待ち
- 2–4: BのCPU(CPU稼働)/2–10: AのI/O
- 4–10: BのI/O要求はAのI/Oが終わるまで待ち。CPUはアイドル
- 10–13: AのCPU(CPU稼働)/10–14: BのI/O
- 13–14: AのI/O要求はBのI/O待ち。CPUはアイドル
- 14–16: BのCPU(CPU稼働)/14–18: AのI/O
- 16–18: BのI/O要求は待ち。CPUはアイドル
- 18–21: AのCPU(CPU稼働)でAが終了/18–22: BのI/O
- 21–22: CPUアイドル
- 22–25: BのCPU(CPU稼働)でBが終了
CPU稼働合計 = 2+2+3+2+3+3 = 15、全経過時間 = 25 → CPU使用率 = 。
選択肢別の誤答解説
- ア: 43% — CPUとI/Oの長さ比を誤って読み、I/Oの待ち時間を過小評価した結果。
- イ: 50% — CPUの稼働時間(15単位)か全経過時間(25単位)のどちらかを読み誤った結果。
- ウ: 60% — 図の目盛比とFIFOの逐次処理を正しく適用した値。
- エ: 75% — I/Oが同時に動ける元の図のまま計算した値(CPU15単位÷終了時刻20)。I/Oの直列化による待ち(CPUアイドル)を考慮していない。
よくある誤解
- I/Oが並列で動く元の図のスケジュールと混同して「I/Oの重なりでCPUは常に稼働する」と誤解する。逐次化ではI/Oが待ち行列を作りCPUにアイドルが発生する。
- 各ブロックの長さを正確に数えず「CPUブロック=I/Oブロック」と仮定してしまうと誤った割合を出す。図の目盛で長さ比を確認すること。
- I/Oの「要求発生順(FIFO)」という条件を見落とし、優先度や入れ替えができると誤って計算する。
補足コラム
- この種の問題は「ブロックの相対長さを目盛で読み取る」「I/Oの並列性(同時処理/逐次処理)」「要求の処理順(FIFOか否か)」を正確に把握する力が問われます。
- 一般式:CPU使用率 = (全タスクのCPU合計時間) / (全体の経過時間)。逐次I/Oにより経過時間はI/Oのキュー待ちで伸びるため使用率が低下します。
- 改善策の例:I/Oデバイスの増設や非同期処理、I/OとCPUのオーバーラップを増やすスケジューリングでCPU使用率が向上します。
FAQ
Q. 図のブロック長を変えたら答えは変わりますか?
A. はい。正解は図から読み取れる長さに依存します。今回の図はタスクAが CPU2・I/O8・CPU3・I/O4・CPU3、タスクBが CPU2・I/O4・CPU2・I/O4・CPU3 で、これが根拠です。
A. はい。正解は図から読み取れる長さに依存します。今回の図はタスクAが CPU2・I/O8・CPU3・I/O4・CPU3、タスクBが CPU2・I/O4・CPU2・I/O4・CPU3 で、これが根拠です。
Q. FIFOでなく優先度付きキューだったら?
A. 要求の順番が変わるため待ち順が異なり、CPUのアイドルの位置が変化して全経過時間も変わります。問題文の条件に従ってFIFO(発生順)を使うことが重要です。
A. 要求の順番が変わるため待ち順が異なり、CPUのアイドルの位置が変化して全経過時間も変わります。問題文の条件に従ってFIFO(発生順)を使うことが重要です。
Q. 元の図でI/Oが同時動作可能ならどうなる?
A. 元の図がその状態で、両タスクは時刻20で終わり、CPU使用率は になります。I/Oを逐次処理にすると待ちが生じて終了が25に延び、60%に下がります。
A. 元の図がその状態で、両タスクは時刻20で終わり、CPU使用率は になります。I/Oを逐次処理にすると待ちが生じて終了が25に延び、60%に下がります。
関連キーワード: CPU使用率、スケジューリング、I/O待ち、FIFO、CPU利用率、システム性能、待ち行列理論

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

