2010-12-22 531 views
6

等待時間定義爲每個進程在獲得時間片之前必須等待的時間。 在調度算法中,比如Shorted Job First和First Come First服務,我們可以輕鬆地發現等待時間,當我們將作業排隊等候,並看到每個人在服務之前必須等待多長時間。Round Robin調度中的平均等待時間

談到循環法或任何其他搶先算法,我們發現長時間運行的作業在CPU中花費一點時間,當它們被搶佔時,然後等待某個時間輪到它執行,並在某個時間輪到它,它會執行直到完成。我想找出最好的方法來理解這種調度算法中作業的「等待時間」。

我發現了一個formula這使等待時間爲:

Waiting Time = (Final Start Time - Previous Time in CPU - Arrival Time) 

但我無法理解這個公式的推理。對於例如考慮一個工作A,其爆發時間爲30個單位,循環發生在每5個單位。還有兩個工作B(10)和C(15)。

中,這些將被提供服務將是順序:

0 A 5 B 10 C 15 A 20 B 25 C 30 A 35 C 40 A 45 A 50 A 55 

等待時間,A = 40 - 5 - 0

  • 我選擇40,因爲40一個永遠等待之後。它只是獲得時間片並繼續。
  • 選擇5是因爲A在30到35之間花費了過程。
  • 0是開始時間。

那麼,我對這個公式有疑問,爲什麼15 A 20沒有佔? 直覺上,我不明白這是如何讓我們等待A的時間,當時我們只是倒數第二次執行,然後減去到達時間。

據我來說,等待時間A應該是:

  • 決賽開始時間 - (所有時間的總和它在處理消費)。

如果這個公式錯了,爲什麼呢?

請幫助澄清我對這個概念的理解。

+0

是不是等待時間就是完成時間 - 到達時間 - 如果它自己跑完所需要的時間。也就是說,與系統中唯一的工作相比,需要花費額外的時間。 – 2010-12-22 07:25:50

+0

@凱斯,那也會給出正確的答案。 tmtowtdi,因爲它是一個簡單的公式。 – 2010-12-22 22:23:47

回答

5

您誤解了「以前在CPU中」的公式含義。這實際上意味着與您稱之爲「在處理中花費的所有時間的總和」相同的東西。 (我猜「前一次在CPU」應該是「先前在CPU上運行的總時間」的短時間,其中「之前」意味着「在最終開始之前」。)

您仍然需要減去到達因爲這個過程顯然沒有在它到來之前等待。 (以防萬一,這是不明確的:「到達時間」是作業提交給調度程序的時間。)在您的示例中,所有進程的到達時間爲0,所以這在這裏沒有什麼區別,但在一般情況下,需要考慮到達時間。

編輯:如果您查看鏈接到的網頁上的示例,則過程P1將在其最後一次啓動前各佔用兩個四個時間單位的時間片,並且其「以前的CPU時間」計算爲8,與上面的解釋。

+0

感謝Marti B.爲我澄清它。 – 2010-12-22 22:24:36

0

最後等待

值 - (時間量子×(N-1))

這裏n表示沒有的次進程到達甘特圖英寸