到着時間が異なるプロセスに対応するラウンドロビンスケジューリングの徹底解説
ラウンドロビン(Round Robin、RR)は、各プロセスに「クォンタム(タイムスライス)」と呼ばれる固定の実行時間を順番に割り当てる、プリエンプティブ(強制的に割り込み可能な)CPUスケジューリングアルゴリズムです。全プロセスの到着時刻がゼロであることを前提とする標準的なラウンドロビンとは異なり、この記事で扱うバリアントは、プロセスがそれぞれ異なる時刻に到着するケースに対応します。レディキュー(実行待ち行列)が動的に変化するため、スケジューリングはより複雑になります。
プリエンプティブなスケジューリングでは、実行中のプロセスは割り込まれてレディキューの末尾へ戻されることがあります。ラウンドロビンは各プロセスに均等なCPU時間を与えることで公平性を確保し、スタベーション(特定のプロセスが永遠に実行されない状態)を防ぎながら、対話型システムに求められる良好な応答時間を維持します。
到着時間が異なる場合のラウンドロビンの動作
プロセスの到着時刻が異なる場合、アルゴリズムは以下の手順で動作します。
- プロセスは到着時刻の順にレディキューへ追加される
- CPUは先頭の実行可能なプロセスを、クォンタム時間だけ処理する
- クォンタム内で処理が完了すれば、そのプロセスは終了する
- 完了しなかった場合は、レディキューの末尾へ移動する
- 新しく到着したプロセスはレディキューに加わり、自分の順番を待つ
- コンテキストスイッチにより、割り込まれたプロセスの状態が保存される
主な特徴
- スタベーションの防止: すべてのプロセスがいずれ必ずCPU時間を得られる
- 公平なスケジューリング: 全プロセスに同一のクォンタム時間を付与
- 優れた応答性: 対話型システムやリアルタイムシステムに適している
- コンテキストスイッチのオーバーヘッド: クォンタムが小さいほど切り替えコストが増加する
例1:クォンタム時間 = 2 の場合
異なる到着時刻とバースト時間(CPU使用時間)を持つ3つのプロセスを考えてみましょう。
| プロセス | 到着時刻 | バースト時間 |
|---|---|---|
| P1 | 0 | 4 |
| P2 | 1 | 3 |
| P3 | 2 | 7 |
ガントチャート(クォンタム = 2)
P1(0〜2)→ P2(2〜4)→ P3(4〜6)→ P1(6〜8)→ P2(8〜9)→ P3(9〜14)
ステップごとの実行内容
| 時間帯 | 実行プロセス | レディキュー | 動作内容 |
|---|---|---|---|
| 0〜2 | P1 | P1 | P1が2単位実行。t=1でP2が到着 |
| 2〜4 | P2 | P2, P1 | P2が2単位実行。t=2でP3が到着 |
| 4〜6 | P3 | P3, P1 | P3が2単位実行 |
| 6〜8 | P1 | P1, P2, P3 | P1が残りの2単位を実行し完了 |
| 8〜9 | P2 | P2, P3 | P2が残りの1単位を実行し完了 |
| 9〜14 | P3 | P3 | P3が残りの5単位を実行し完了 |
平均時間の計算
| プロセス | 到着時刻 | バースト時間 | 完了時刻 | ターンアラウンド時間 | 待ち時間 |
|---|---|---|---|---|---|
| P1 | 0 | 4 | 8 | 8 | 4 |
| P2 | 1 | 3 | 9 | 8 | 5 |
| P3 | 2 | 7 | 14 | 12 | 5 |
平均ターンアラウンドタイム =(8 + 8 + 12)÷ 3 = 9.33単位
平均待ち時間 =(4 + 5 + 5)÷ 3 = 4.67単位
例2:クォンタム時間 = 4 の場合
次に、より大きなクォンタムサイズを使用した場合を見てみましょう。
| プロセス | 到着時刻 | バースト時間 |
|---|---|---|
| P1 | 2 | 8 |
| P2 | 0 | 7 |
| P3 | 1 | 9 |
ガントチャート(クォンタム = 4)
P2(0〜4)→ P3(4〜8)→ P1(8〜12)→ P2(12〜15)→ P3(15〜20)→ P1(20〜24)
| プロセス | 到着時刻 | バースト時間 | 完了時刻 | ターンアラウンド時間 | 待ち時間 |
|---|---|---|---|---|---|
| P1 | 2 | 8 | 24 | 22 | 14 |
| P2 | 0 | 7 | 15 | 15 | 8 |
| P3 | 1 | 9 | 20 | 19 | 10 |
平均ターンアラウンドタイム =(22 + 15 + 19)÷ 3 = 18.67単位
平均待ち時間 =(14 + 8 + 10)÷ 3 = 10.67単位
まとめ
到着時刻が異なるプロセスを扱うラウンドロビンスケジューリングは、動的に変化するプロセスの到着に対応しながら、公平なCPU割り当てを実現します。クォンタムサイズはパフォーマンスに大きな影響を与えます。小さなクォンタムは応答時間を改善する一方でコンテキストスイッチのオーバーヘッドを増大させ、逆に大きなクォンタムは公平性が低下する可能性があるものの、スループットの向上につながります。

-
レベルリンク付き(2,4)木:データ構造における効率的な指探索の実現
本記事では、レベルリンク(level links)の導入によって(2,4)木がどのように効率的な指探索(finger search)を実現できるのかを解説します。ここで説明する考え方は、b ≥ 2a を満たす、より一般的な高さ平衡木である(a,b)木のクラスにもそのまま適用できます。(2,4)木の基本性質(2,4)木とは、すべての葉が同じ深さを持ち、すべての内部ノードの次数(子の数)が2、3、4のいずれかである高さ平衡探索木として定義されます。要素は葉に格納され、内部ノードには探索を導くためのキーのみが格納されます。各内部ノードの次数が2以上であるため、(2,4)木の高さは O(log n)
-
データ構造の基礎:チェイン法(連鎖法)によるハッシュの仕組み
チェイン法(連鎖法)によるハッシュとはこのセクションでは、チェイン法(Chaining、連鎖法)と呼ばれるハッシュ手法について解説します。チェイン法は、ハッシュテーブルにおける衝突(コリジョン)を解決するための代表的な手法の一つです。ハッシュテーブルでは、異なるキーが同じハッシュ値にマッピングされる「衝突」を完全に避けることはできません。しかし、衝突の発生をできるだけ抑えたり、同じハッシュ値を持つ複数の要素を適切に格納したりすることは可能です。チェイン法はまさにこの課題に対処するためのアプローチです。基本的な仕組みここでは、0から6までの値を返すハッシュ関数 h(x) を想定してみましょう。こ