ラウンドロビン・
スケジューリングは、
オペレーティングシステムにおける
プロセス管理の基礎となる
スケジューリングアルゴリズムの一つです。その名の通り、
プロセスを順番に、一定の時間単位で実行させることで、リソースを公平に分配しようとするものです。
基本的な仕組み
ラウンドロビン方式では、実行可能な状態にある
プロセスを順番に並べ、それぞれに「タイムスロット」または「クォンタム」と呼ばれる、一定のCPU時間を与えます。各
プロセスは割り当てられた時間だけ実行され、時間が来ると中断され、次の
プロセスにCPUが移ります。このサイクルを繰り返すことで、全ての
プロセスが少しずつCPU時間を得ることができます。
例えば、job1に100
[ミリ秒]のクォンタムが与えられたとします。もしjob1の処理が完了するのに250ms必要であれば、まず100ms実行された後、job1は一時中断され、他の
プロセスにCPUが譲られます。そして、すべての
プロセスが順番に100msずつ実行された後、再びjob1に100msのCPU時間が与えられます。この
プロセスを繰り返すことで、最終的にjob1は全ての処理を完了できます。
特徴と利点
単純さと実装の容易さ: アルゴリズムがシンプルであるため、実装が容易です。
公平性: 各
プロセスに平等にCPU時間が割り当てられるため、一部の
プロセスがリソースを独占することを防ぎます。
リソーススタベーションの回避: 優先度設定や他のアルゴリズムとの組み合わせがない限り、特定の
プロセスがいつまでも実行されないといったリソーススタベーションの問題は発生しません。
適用範囲
ラウンドロビン・
スケジューリングは、
オペレーティングシステムだけでなく、ネットワークの
スケジューリングにも応用できます。特に無線ネットワークでは、複数のステーションが同じチャンネルを共有するため、
ラウンドロビン方式で各ステーションに送受信の機会を公平に与えることができます。
課題と限界
ラウンドロビンは一見すると公平なアルゴリズムですが、いくつかの課題も抱えています。
通信品質や転送速度の差異への非対応: 各ステーションの通信品質や転送速度の違いを考慮していないため、必ずしも最適なサービスを提供できない場合があります。例えば、通信状態の悪いステーションにも平等に時間を割り当てるため、ネットワーク全体の効率を低下させる可能性があります。
回線容量の減少: 受信機が受信可能な状態かどうかを考慮せずにスケジュールするため、約半分の時間は受信不可能な受信機に時間を割り当ててしまい、結果としてネットワークの回線容量が減少する可能性があります。
加重
ラウンドロビン (WRR) は、
ラウンドロビンの公平性を保ちつつ、各
プロセスに異なる優先度を設定できるように拡張したアルゴリズムです。各
プロセスに重み付けを行い、その重みに比例したCPU時間を割り当てることで、優先度の高い
プロセスにより多くのリソースを与えることができます。
しかし、WRRでは適切な重み付けを行うために、平均
パケットサイズを事前に知っておく必要があり、それが難しい場合があります。
不足
ラウンドロビン (DRR) は、WRRの課題を解決するために提案されたアルゴリズムです。DRRでは、各
プロセスに「不足カウンタ」を設定し、割り当てられたCPU時間の残りを管理します。これにより、平均
パケットサイズを事前に知らなくても、様々なサイズの
パケットを効率的に処理できるようになりました。
DRRは、各フロー(コネクション)の1ラウンド当たりの通信量を「加重 × F」として不足カウンタに設定します。各フローで送出した
パケットサイズを不足カウンタから減算し、不足カウンタが負にならない限り送出を続けます。ラウンドの最後には不足カウンタに再度「加重 × F」を加えて次のラウンドに備えます。
まとめ
ラウンドロビン・
スケジューリングは、シンプルで実装が容易なため、多くのシステムで利用されています。しかし、その単純さゆえに、考慮すべき課題も存在します。加重
ラウンドロビンや不足
ラウンドロビンなどの派生アルゴリズムは、これらの課題を解決するための改良版として提案されており、より複雑な環境でより効率的なリソース管理を実現できます。
関連項目
スケジューリング
*
ラウンドロビン