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

選択肢
ア:43
イ:50
ウ:60(正解)
エ:75
🔒 解説は解答すると表示されます
CPUとI/Oの排他スケジューリング【午前解説】
正解の理由
図の目盛から各 CPU ブロックは同じ長さ(1 単位)、各 I/O ブロックはそれより長く(図では 2 単位)見えるため、この仮定でスケジュールを時刻ベースに再現すると、CPU の総実行時間は 6 単位、全経過時間(両者終了まで)は 10 単位になります。よって CPU 使用率は 、すなわち選択肢のうち ウ の 60% が正しいです。
解法ステップ
- 図の目盛を単位として各ブロック長を読み取る(CPU ブロック = 1 単位、I/O ブロック = 2 単位と仮定)。
- I/O が逐次(1 台で FIFO)になった場合の時系列を追う(I/O 使用中の要求はキューに入る)。
- 時刻ごとに CPU が誰を実行しているか、I/O が誰を処理しているかを並べて書く。
- CPU の稼働区間を合計し(ここでは 6 単位)、最終終了時刻(ここでは 10)で割る:。
- 百分率に直して 60% とする。
具体的な時刻スケジュール(単位は図の目盛)
- 0–1: A の CPU1(CPU 稼働)
- 1–3: A の I/O(I/O が占有)/1–2: B の CPU1(CPU 稼働) → 2–3: CPU はアイドル
- 2(B の I/O 要求発生)はキューに入り 3–5 に実行(A の I/O 完了後)
- 3–4: A の CPU2(CPU 稼働)
- 4–5: CPU アイドル(次の CPU 要求はまだ I/O 待ち)
- 5–6: B の CPU2(CPU 稼働)/5–7: A の I/O(キューで実行)
- 6–7: CPU アイドル
- 7–8: A の CPU3(CPU 稼働)
- 8–9: CPU アイドル(B の I/O 実行中)
- 9–10: B の CPU3(CPU 稼働)
CPU 稼働合計 = 1+1+1+1+1+1 = 6、全経過時間 = 10 → CPU 使用率 = 。
選択肢別の誤答解説
- ア: 43% — CPU と I/O の長さ比を誤って読み、I/O の待ち時間を過小評価した結果。
- イ: 50% — CPU の稼働時間(6 単位)または全経過時間(10 単位)のどちらかを間違えて半分とした誤り。
- ウ: 60% — 図の目盛比と FIFO の逐次処理を正しく適用した値。
- エ: 75% — 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. はい。正解は図から読み取れる比率に依存します。今回の図では CPU=1、I/O=2 と読むのが自然で、これが根拠です。
A. はい。正解は図から読み取れる比率に依存します。今回の図では CPU=1、I/O=2 と読むのが自然で、これが根拠です。
Q. FIFO でなく優先度付きキューだったら?
A. 要求の順番が変わるため待ち順が異なり、CPU のアイドルの位置が変化して全経過時間も変わります。問題文の条件に従って FIFO(発生順)を使うことが重要です。
A. 要求の順番が変わるため待ち順が異なり、CPU のアイドルの位置が変化して全経過時間も変わります。問題文の条件に従って FIFO(発生順)を使うことが重要です。
Q. 元の図で I/O が同時動作可能ならどうなる?
A. I/O が並列で動けば I/O の待ち行列が発生せず、CPU のアイドルは減少して CPU 使用率が上がります(元の図はそれを示しているケースが多い)。
A. I/O が並列で動けば I/O の待ち行列が発生せず、CPU のアイドルは減少して CPU 使用率が上がります(元の図はそれを示しているケースが多い)。
関連キーワード: CPU使用率、スケジューリング、I/O待ち、FIFO、CPU利用率、システム性能、待ち行列理論

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

