2012-03-28 2 views
1

問題:E通じラウンドロビンスケジューリング:2つの異なるソリューション - それはどのように可能ですか?

ファイブバッチジョブAは、コンピュータセンターでほぼ同時刻に到着します。彼らは、10、6、2、4、および8分の実行時間を見積もっています。それらの(外部で決定された)優先度はそれぞれ3,5,2,1,4であり、5が最も高い優先度である。平均プロセスターンアラウンドタイムを決定する。プロセススイッチングオーバーヘッドを無視します。ラウンドロビンスケジューリングでは、システムがマルチプログラミングであり、各ジョブでCPUの公平な共有が得られると仮定します。すべてのジョブは完全にCPUにバインドされています。

溶液#1以下のソリューションはthis pageから来ている:

ラウンドロビンの場合は、最初の10分の間に、各ジョブは CPUの1/5を取得します。 10分の終わりに、Cが終了する。次の8時間の間に、 分、各ジョブはCPUの1/4を取得し、その後時間Dが終了する。 残りの3つのジョブのそれぞれは、6 分、Bが終了するまでCPUの1/3を取得します。 5つの ジョブの仕上げ時間は、平均で22分、10,18,24,28,30です。

溶液#2以下のソリューションは、コーネル大学から来てhereを見つけることができ、かつ問題がにすることにより、正確に同じ形式(このソリューションを、与えられているにもかかわらず、明らかに前のものと異なっています方法は、)私には、より理にかなって:

所要時間は、ジョブ到着し、ジョブ完了の間 を経過する時間の量であることを覚えておいてください。 すべてのジョブが時刻0に到着すると仮定しているので、ターンアラウンドタイムは単純に完了する時刻である になります。 (a)ラウンドロビン:下の表は、各タイムクォンタムでジョブが処理される休憩を示しています( )。 A * は、そのクォンタム中にジョブが完了したことを示します。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
A B C D E A B C* D E A B D E A B D* E A B E A B* E A E A E* A A* 

結果が異なっている:第1に、Cは8分後に終了するのに対し、Cは、例えば、10分後に終了する最初のもので。

どちらが正しいのですか?その理由は何ですか?私は混乱しています..事前に感謝!

答えて

1

問題が異なります。最初の問題は時間の量子を指定していないので、量子は1分に比べて非常に小さいと仮定しなければなりません。 2番目の問題は、1分のスケジューラ量子を明確に示しています。

2番目のソリューションの謎は、タスクが文字順で実行されると仮定している理由です。私はこれがコース全体を通して行われた仮定であると仮定することができ、学生はここでそれを知ることが期待されるでしょう。

+0

量子力学が1分であると(運動のためだけに)仮定できます。私はそれが現実的ではなく、1msecのようなものでなければならないことを知っていますが、計算が簡単になるようにするには、明らかに1分の量子を使用しています。その場合、2番目の解決策は正しいですか?第1の解決法に関しては、なぜ1分量子を扱っていないので、Cは10分後に終了し、3分後または2分後に終了しないのはなぜですか?私が理解するのを助けるためにこの結果を与える公式/推論を私に提供できますか? –

+1

1分のクォンタを仮定すると、2番目の解決策は正しいです(ただし優先度は無視されますが、それは別の話です)。しかし、それは不合理な仮定です。問題がそうでない限り、あなたはそれを作るべきではありません。 CはCPU時間の2分を必要とし、CPUの1/5を取得するため、10分後に終了します。したがって、CPU時間を2分にするには10分必要です。その時点で、すべてのプロセスが2分のCPU時間を取得しており、それぞれに必要なCPU時間を計算できます。その後、別のプロセスが完了するまで1/4になります。等々。 –

+0

この問題は、5つのジョブがほぼ同時に到着すると想定することを明確に述べています。また、ラウンドロビンは定義によって優先順位を扱っていません。しかし、2番目の解決策は、ジョブが実行されて中断されている途中でいくつかの順序を示唆しているようです:AからB、C、D、E、Aなどに戻ります。これは、すべてのジョブが一緒に到着するという事実(秩序が存在しないので)RRは優先度を課していませんか? –

0

実際、「正しい」RRアルゴリズムはありません。 RRは、いくつかのタスクを循環的な順序でスケジューリングするという共通の概念に基づいた単なるアルゴリズムのファミリです。実装は異なる場合があります(たとえば、タスクの優先度を考慮する場合や、廃棄する場合や、タスクの長さなどの関数として優先度を手動で設定する場合など)。

答えは - どちらのアルゴリズムも正しいと思われますが、それらはちょうど異なっています。

関連する問題