最終更新日:2026年8月12日
fe fe-technology operating-system scheduling
まず結論
ラウンドロビンスケジューリングとは、各ジョブへ一定時間ずつCPUを割り当て、時間内に終わらなければ待ち行列の最後へ戻す方式です。
この一定時間を タイムクオンタム と呼びます。
A → B → C → A → B → C → …
基本情報技術者試験では、次の判断軸を押さえると解きやすくなります。
実行中のジョブ数が変わったら、CPUの割当て割合も計算し直す。
また、スケジューリング方式を問う選択肢では、何を改善したいのかを見ることも重要です。
対話型処理
→ ユーザーを待たせない
→ 応答時間を短くしたい
バッチ処理
→ 多少待ってもよい
→ まとめて処理する
タイムクオンタムが十分に小さく、切替え時間を無視できる場合は、実行中のジョブがCPUを均等に分け合うと考えられます。
直感的な説明
ラウンドロビンは、複数人が1本のペンを順番に使うイメージです。
Aさんが少し使う
↓
Bさんが少し使う
↓
Cさんが少し使う
↓
Aさんへ戻る
1人が終わるまで使い続けるのではなく、決められた短い時間ごとに交代します。
そのため、複数のジョブが少しずつ同時に進んでいるように見えます。
例えば、A、B、Cの3ジョブが実行中なら、切替え時間を無視したとき、各ジョブが使えるCPU時間はおよそ3分の1ずつです。
3ジョブ実行中
→ 各ジョブはCPUの1/3
1ジョブ終了後
→ 残り2ジョブはCPUの1/2ずつ
一方、対話型処理では「利用者が操作したあと、どれだけ早く応答するか」が重要です。
対話型処理を優先
→ 利用者の待ち時間を短くしやすい
→ 応答性能の向上が期待できる
定義・仕組み
ラウンドロビンスケジューリングでは、待ち行列の先頭にいるジョブへタイムクオンタム分だけCPUを割り当てます。
処理が終わらなければ、そのジョブを待ち行列の最後へ戻します。
待ち行列:A → B → C
Aを実行
↓ 未完了
B → C → A
Bを実行
↓ 未完了
C → A → B
主な用語は次のとおりです。
| 用語 | 意味 |
|---|---|
| タイムクオンタム | 1回に連続してCPUを使える時間 |
| 待ち行列 | CPUの割当てを待つジョブの並び |
| コンテキストスイッチ | 実行中のジョブを切り替える処理 |
| 経過時間 | 開始から実際に過ぎた時間 |
| CPU処理時間 | そのジョブがCPUを使った合計時間 |
タイムクオンタムが小さいほど、各ジョブへこまめにCPUが回ります。
ただし、現実には切替えのたびにコンテキストスイッチの負荷が発生します。
| タイムクオンタム | 特徴 |
|---|---|
| 小さい | 応答性はよいが、切替え回数が増える |
| 大きい | 切替えは少ないが、先着順実行に近づく |
このテーマは、基本情報技術者試験の「OS」「タスク管理」「スケジューリング」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、複数ジョブのCPU処理時間とスケジューリング条件から、特定ジョブの終了時刻を求める問題が出題されます。
タイムクオンタムが十分に小さく、切替え時間を無視する条件では、次の手順が有効です。
1. 現在動いているジョブ数を数える
2. 最も短い残りCPU時間を確認する
3. 残りCPU時間 × 実行中ジョブ数で経過時間を求める
4. 完了したジョブを除く
5. 残り時間とジョブ数を更新する
例えば、次の3ジョブを同時に開始するとします。
| ジョブ | 必要なCPU時間 |
|---|---|
| A | 4分 |
| B | 8分 |
| C | 12分 |
最初は3ジョブがCPUを分け合います。
最初に終わるAがCPU時間4分を受け取るには、次の経過時間が必要です。
4分 × 3ジョブ = 12分
12分経過した時点では、各ジョブが4分ずつ処理されています。
A:完了
B:残り4分
C:残り8分
次はBとCの2ジョブです。
Bの残り4分を処理するには、次の経過時間が必要です。
4分 × 2ジョブ = 8分
したがって、Bの終了時刻は次のとおりです。
12分 + 8分 = 20分
この計算で重要なのは、Aの終了後も3ジョブのままと考えないことです。
目的からスケジューリングを判断する
科目Aでは、計算だけでなく「どのスケジューリング方針が適切か」を問う選択肢も出ます。
| 目的・状況 | 判断 |
|---|---|
| 対話型処理の応答を速くしたい | 対話型処理の優先度を高くする |
| 各ジョブへ少しずつCPUを回したい | ラウンドロビン |
| 到着順に処理したい | FCFS |
| 優先度の高い処理を先に進めたい | 優先度スケジューリング |
| CPUとI/Oを効率よく使いたい | CPU処理だけに偏らず、I/O待ちも考慮する |
特に、対話型処理とバッチ処理が混在する場合は、次の切り分けが有効です。
対話型処理
→ 応答時間を重視
→ 優先度を高くすると応答性を上げやすい
バッチ処理
→ 利用者との即時のやり取りが少ない
→ 完了まで多少待てる
また、タイムクオンタムを短くすると応答性は上がりやすい一方、コンテキストスイッチの回数が増えます。
タイムクオンタムを短くする
→ 応答性は上がりやすい
→ 切替えオーバーヘッドは増える
したがって、「タイムスライス方式だから必ずスループットが低下する」と一般化しないようにします。
科目Bでどう使う?
科目Bでは、待ち行列やタイムクオンタムが具体的に示され、処理順を一つずつ追う場合があります。
例えば、タイムクオンタムが2で、各ジョブの残り処理時間が次のとおりだとします。
A:3
B:5
C:2
待ち行列が A → B → C の場合は、次のように進みます。
Aを2処理 → A残り1
Bを2処理 → B残り3
Cを2処理 → C完了
Aを1処理 → A完了
Bを2処理 → B残り1
Bを1処理 → B完了
科目Bでは、次の4点を表にすると安全です。
| 見るもの | 内容 |
|---|---|
| 現在の待ち行列 | 次に実行するジョブ |
| 残り処理時間 | タイムクオンタム後の残り |
| 完了したか | 待ち行列へ戻すか除くか |
| 経過時間 | 合計で何単位進んだか |
タイムクオンタムが明示されている場合は、均等配分の近似だけでなく、実際の実行順を追う必要があります。
よくある誤解・混同
誤解1:ジョブの単独実行時間が、そのまま終了時刻になる
複数ジョブでCPUを共有する場合、終了までの経過時間は単独実行時より長くなります。
CPU処理時間
→ 実際にCPUを使った時間
経過時間
→ 待ち時間を含む開始からの時間
誤解2:最後まで同じジョブ数で計算する
途中でジョブが終了すると、残りのジョブへCPUが回る割合が増えます。
3ジョブ実行中 → 1/3ずつ
1ジョブ終了後 → 1/2ずつ
誤解3:ラウンドロビンと先着順を同じだと思う
| 方式 | CPUの割当て |
|---|---|
| ラウンドロビン | 一定時間ごとに交代する |
| FCFS(先着順) | 先に来たジョブが終わるまで実行する |
タイムクオンタムが非常に大きいラウンドロビンは、FCFSに近い動きになります。
誤解4:切替え時間は必ず無視できる
問題文に「ジョブの切替え時間は考慮しない」とあれば無視します。
指定がなければ、実際のシステムではコンテキストスイッチの負荷があることを理解しておきます。
誤解5:FCFSなら公平なので応答時間も保証できる
FCFSは単純に到着順で処理する方式です。
長いジョブが先に到着
↓
後ろの短いジョブも待たされる
そのため、スループットや応答時間が一定になるわけではありません。
誤解6:CPUを多く使うジョブを優先すれば、全体のスループットが上がる
CPUを長く使うジョブばかり優先すると、I/Oを使うジョブが待ち、CPUとI/O装置を並行して使う機会が減ることがあります。
CPU処理だけを優先
→ I/Oジョブが待つ
→ I/O装置が遊ぶ時間が増えることがある
全体の効率は、CPUだけでなくI/O資源の利用も含めて考えます。
他のスケジューリング方式との違い
| 方式 | 判断の合図 |
|---|---|
| ラウンドロビン | 一定時間ずつ順番に割り当てる |
| FCFS | 到着順に、完了まで実行する |
| 最短ジョブ優先 | 処理時間が短いジョブを優先する |
| 優先度スケジューリング | 優先度が高いジョブを先に実行する |
まとめ(試験直前用)
- ラウンドロビンは、タイムクオンタムごとにCPUを順番に割り当てる
- 時間内に終わらないジョブは、待ち行列の最後へ戻る
- タイムクオンタムが十分に小さく切替え時間を無視すると、実行中ジョブでCPUを均等に分けると考えられる
- ジョブが終了したら、残りジョブへのCPU割当て割合を計算し直す
- 対話型処理は応答時間を重視し、バッチ処理は即時応答をそれほど重視しない
- タイムクオンタムを短くすると応答性は上がりやすいが、切替え負荷は増える
- FCFSは到着順であり、応答時間やスループットを保証する方式ではない
- CPU処理時間と、実際の経過時間を混同しない
- 明示されたタイムクオンタムが大きい場合は、実行順を一つずつ追う