進程調度新要求:響應時間

響應時間

T響應時間 = T首次運行 - T到達時間

引入響應時間的原因:如果使用STCF的調度方式,可以使週轉時間最短,但是,如果短任務很多,則沒有長任務執行的機會,對長任務來說很“不公平”

輪轉

輪轉的思想:設置一個時間片,一個進程使用完一個時間片後,切換到下一個進程。

使用輪轉算法,執行時間長的任務也有機會盡快的運行,從而較長的任務的響應時間也可以變短。

時間片長度必須是時鐘中斷週期的倍數。(任務的切換依賴於時鐘中斷,時鐘中斷將CPU的控制權交給操作系統)

這看起來又是一個完美的算法,是不是忽略了什麼?時間片的長度是多少?

任務切換時,需要進行上下文切換,這是一部分時間成本。如果時間片太短,頻繁的上下文切換會佔用大量的時間;如果時間片太長,則響應時間也會變長。所以,時間片具體的長度,需要權衡。

輪轉的週轉時間

如果只考慮響應時間,在時間片合適的情況下,輪轉是很好的算法。

現在,再來討論一下輪轉的週轉時間

進程編號 到達時刻 執行時間
0 0 30
1 0 30
2 0 30

暫時不考慮上下文切換的時間成本

如果輪轉時間爲10,且每一個進程被調度的概率相同,則可能會有下面的運行情況:

時刻 0 10 20 30 40 50 60 70 80
運行的進程 0 1 2 0 1 2 0 1 2
進程編號 完成時間
0 70
1 80
2 90

平均週轉時間 = (70 + 80 + 90)/3

如果不使用輪轉,平均週轉時間 = (30 + 60 + 90)/3

可見,如果要考慮週轉時間,輪轉並不是一個好的算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章