2012-03-05 117 views
0

我被賦予了一項任務。瞭解時間片和執行時間

編寫一個程序來模擬作業調度的操作系統。 作業隨機生成。每個作業都被賦予一個從1到4的隨機 優先級 - 其中1是最高優先級 - 並且是一個隨機的完成其執行的時間量。

喬布斯沒有開始執行,並運行至完成,而是分享 處理器。操作系統執行稱爲時間片的時間固定單位 的作業。在時間片結束時,當前 作業的執行被暫停。然後,該作業將被放置在優先級爲 的隊列中,等待下一個處理器時間份額。然後將具有最高優先級的作業 從優先級隊列 中移除並且針對時間片執行。首次生成作業時,如果處理器空閒,將立即開始執行 。否則它將被放置在優先級隊列中。

在這個作業中,你將需要一個隊列的實現和 優先級隊列。您可以使用Java類 庫(java.util.PriorityQueue)中的優先級隊列。它實現了接口 java.util.Queue。

IM與時間片和執行時間.. 混淆爲我的理解現在是讓說最終詮釋時間片= 3,完成所有的工作時間是最終詮釋時鐘=20分鐘; 當作業A從0分鐘開始執行時間爲5(在1-5之間隨機生成)。 直到分鐘3.執行時間爲2分鐘的作業B進入第3分鐘時,作業B進入優先級隊列?在完成執行作業B後,作業A進入完成執行或作業C?

請解釋,如果我錯了。謝謝

回答

0

在你是否被執行作業A或作業C的問題(一旦B是完整的)應該取決於什麼時Queue的回報,這將是與工作最高優先級。

如果作業A具有1和作業C第2優先級的優先級,PriorityQueue中會返回作業A和應該得到下一個時間片。

如果作業C有2個優先級和作業B的4優先級,PriorityQueue中會返回作業C,並且應該得到下一個時間片。

正如adn_295所說,這是一項很好的任務。

0

PriorityQueue總是返回最高優先級的任務,所以只要返回隊列就會一直返回。我建議你嘗試實施解決方案,看看它是如何工作的。 (或者使用PriorityQueue編寫簡單的測試程序)