ラウンドロビンスケジューリング:プロセスを複数回リストすることを許可しますか?


9

ラウンドロビンスケジューラでは、プロセスリストにプロセスを複数回追加すると、優先度を高くすることができます。

これがどれほど実用的なアプローチなのかと思います。プロセスに長いタイムスライスを与える(利点:切り替え時間を短縮する)か、優先度の高いプロセスの個別のリストを維持するなど、他の手法に比べてどのような利点がありますか。特に、プロセスを複数回リストすると、公平性と反応性にどのように影響しますか?

(Andrew Tanenbaumのオペレーティングシステムの演習2.16から:Design and Implementation 1st ed。)


タンネンバウムは多くの本を書きました。多分あなたはオペレーティングシステムを意味します。
Dave Clarke

@DaveClarkeはい、これを指摘してくれてありがとう。(そして実際、私がここに持っているのは翻訳だけですが、テキストの一部が欠けているとは思いません。)
Gilles「SO-邪悪なことをやめなさい」

回答:


4

このアプローチの利点は、ラウンドロビンスケジューリングが非常に効率的であるため、サイクルを盗むより複雑なスケジューラに依存する必要がないことです。優先度の高いプロセスに長いタイムスライスを導入すると、他のスレッドの応答性が低下し、OSがジャンプして割り込みなどを処理することが難しくなります。プロセスの個別のリストを維持するには、はるかに複雑なスケジューラが必要になり、サイクルの点でコストが高くなります。しかし、公平性に問題があるかどうかはわかりません。問題は、粒度がかなり粗いことだと思います。プロセスは、基本的なタイムスライスの整数倍しか持つことができません。

否定的な点の1つは、プロセスの発生ごとにキューから削除する必要があるため、プロセスの削除にはコストがかかることです。たぶん、これは怠惰に行うことができます。


2

タスクをラウンドロビンスケジューリングキューに複数回追加すると、エントリが適度に適切に分散された状態を維持するという問題が発生します。これは、システムが動的なタスクの作成または削除を許可しない場合は簡単に確認できますが、一般的には不可能です。

キューから項目を削除するより複雑なプロセスに加えて、キュー内のプロセスエントリの最終的なスキューは、複数の優先度レベルで公平にするのが簡単な不均衡な動作になります。


優先順位をつけたいという欲求は、公平性を禁ずるものではありませんか?
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.