最終更新日:2026年7月13日
fe fe-technology operating-system scheduling
まず結論
CPUスケジューリングとは、複数のタスクのうち、次にどのタスクへCPUを割り当てるかを決める仕組みです。
基本情報技術者試験では、次の順で考えると整理しやすくなります。
1. CPUを使えるタスクを確認する
2. その中から優先度が高いタスクを選ぶ
3. I/O待ちのタスクはCPUを使えない
4. CPUを使えるタスクが1つもなければ遊休時間
特に大切なのは、優先度が高くても、I/O待ち中ならCPUは使えないという点です。
直感的な説明
CPUを、1人しかいない作業者だと考えてみます。
複数の仕事が届いていても、作業者が同時に処理できるのは1件だけです。
一方、I/O装置は別の担当者のようなものです。
CPU処理 → CPUが担当する
I/O処理 → 入出力装置が担当する
あるタスクがI/O処理をしている間、CPUは別の実行可能なタスクを処理できます。
定義・仕組み
タスクは、処理の進行に応じて状態が変わります。
| 状態 | 意味 |
|---|---|
| 実行状態 | 現在CPUを使っている |
| 実行可能状態 | CPUが空けば実行できる |
| 待ち状態 | I/O完了などを待っている |
CPUは、実行可能状態のタスクから次に実行するものを選びます。
優先度方式では、実行可能なタスクの中から、優先度が最も高いものを実行します。
優先度が高い
+
実行可能状態
→ CPUを使える
優先度が高くても、I/O待ちなら候補にはなりません。
科目Aでどう出る?
科目Aでは、CPU処理とI/O処理が交互に並ぶタスクをタイムチャートにして、CPUの遊休時間などを求めます。
たとえば、3つのタスクが次の処理を行うとします。
| 優先度 | 処理順序 |
|---|---|
| 高 | CPU 3 → I/O 5 → CPU 2 |
| 中 | CPU 2 → I/O 6 → CPU 2 |
| 低 | CPU 1 → I/O 5 → CPU 1 |
CPUの処理順は次のようになります。
0〜3 高のCPU処理
3〜5 中のCPU処理
5〜6 低のCPU処理
6〜8 全タスクがI/O待ち → CPU遊休
8〜10 高のCPU処理
10〜11 全タスクがI/O待ち → CPU遊休
11〜13 中のCPU処理
13〜14 低のCPU処理
したがって、CPUの遊休時間は、
6〜8 2ミリ秒
10〜11 1ミリ秒
合計 3ミリ秒
となります。
タイムチャートの書き方
- 最初に実行可能なタスクを確認する
- その中から最も優先度が高いものを実行する
- I/Oに入ったタスクを待ち状態にする
- 残りの実行可能タスクを探す
- 実行可能タスクがなければ遊休時間として記録する
この順番で追えば、複雑な問題でも整理しやすくなります。
よくある誤解・混同
誤解1:優先度が高いタスクは常にCPUを使う
優先度が高くても、I/O待ち中ならCPUは使えません。
誤解2:I/O中もCPUを使っている
I/O処理は入出力装置が担当します。その間、CPUは別のタスクを実行できます。
誤解3:CPU時間とI/O時間を全部足せばよい
CPU処理とI/O処理は並行して進むため、単純な合計では求められません。
誤解4:空白時間をすべて遊休時間と考える
遊休時間は、CPUを使えるタスクが1つもない時間です。各タスクが実行可能か待ち状態かを確認します。
まとめ(試験直前用)
- CPUは、実行可能なタスクの中から次に実行するものを選ぶ
- 優先度方式では、実行可能な中で最も優先度が高いタスクを選ぶ
- I/O待ちのタスクはCPUを使えない
- 全タスクがI/O待ちの時間がCPUの遊休時間
- タイムチャートを書いて、CPU処理とI/O処理を分けて追う