2012-03-05 13 views
0

私は割り当てられました。タイムスライスと実行時間の理解

オペレーティングシステムでジョブスケジューリングをシミュレートするプログラムを作成します。 ジョブはランダムな時間に生成されます。各ジョブには、優先度1〜4のランダム と、実行を完了するためのランダムな の両方が与えられます。

ジョブは実行を開始せず、完了するまで実行しますが、代わりに プロセッサを共有してください。オペレーティングシステムは、時間スライスと呼ばれる時間の固定単位 のジョブを実行します。タイムスライスの終わりに、現在の ジョブの実行が中断されます。次にジョブは優先度 キューに置かれ、次のプロセッサ時間分の待機を待ちます。最高優先度を有するジョブ は、優先度キュー から除去され、タイムスライスのために実行される。ジョブが最初に生成されるときには、プロセッサがフリーであればすぐに が実行を開始します。それ以外の場合は が優先キューに配置されます。

この割り当てでは、キューと 優先キューの実装が必要です。優先度キューは、Javaクラス ライブラリ(java.util.PriorityQueue)で使用できます。インタフェース java.util.Queueを実装しています。今、最終的なint型のタイムスライス= 3は、すべてのジョブが完了するまでの時間は、最終的なint型のクロック= 20分であるとしましょうさのために私の理解として、タイムスライスと実行時間.. で

イム混乱; ジョブAの開始時刻が0分の場合、実行時間は5です(1〜5の間でランダムに生成されます)。 実行時間が3分のジョブBが分3に入っている間に、ジョブ3を実行する間にジョブAが優先キューに入れられますか?ジョブBを終了した後、ジョブAは実行を終了するか、ジョブCを終了するか?

私は間違っている場合説明してください。ありがとう

答えて

0

(一回Bが完了している)、それは依存すべきものとの仕事になります優先度つきキューに戻り、最高優先度。ジョブAが1とジョブC 2の優先順位の優先順位を持っていた場合

は、優先度つきキューは、ジョブAを返しますし、それは次のタイムスライスを取得する必要があります。

ジョブCの優先度が2、ジョブBの優先度が4の場合、PriorityQueueはジョブCを返し、次のタイムスライスを取得します。

adn_295によれば、これは良い割り当てです。

0

PriorityQueueは常に優先度が最も高いタスクを返します。したがって、キューに追加するたびに返されます。どのように動作するかを見て解決策を実装することをお勧めします。 (またはPriorityQueueを使用して簡単なテストプログラムを書く)

0

まず第一にこれは非常に優れた課題です。あなたは、OSがどのようにジョブ/タスクをスケジュールするかの正確な仕組みを実装する必要があります。それを明確に理解するには、これらの参考文献を参照してください。

1)http://oreilly.com/java/archive/quartz.html

2)ジョブAやジョブCが実行されているかどうかの質問にはJob Scheduling Problem in Java

関連する問題