cpu調度是多道程序設計的基礎。本文是對操作系統概念(第七版)第五章——cpu調度的學習總結,不足之處歡迎各位博友提出,共同進步。
本文內容:
1、介紹cpu調度常見概念。
2、介紹cpu調度算法以及特點。
(1)cpu調度決策發生的情況:
a、當一個進程從運行態到等待狀態。(I/O請求)
b、運行狀態到就緒態(中斷)
c、等待狀態到運行態
d、一個進程終止
其中a,d是非搶佔的,b,c是搶佔的。
(2)調度準則
a、cpu使用率
b、吞吐量(單位時間內可以完成的進程數量)
c、週轉時間(進程提交到完成所需要的總時間)
d、等待時間(進程在就緒隊列中等待所花費的總時間)
e、響應時間(提交請求到第一響應的時間(開始響應))
(3)調度算法
a、先到先服務調度(FCFS)
缺點:平均等待時間通常比較長。
特點:非搶佔的。
b、最短作業優先調度(SJF)
特點:最佳的,但困難在於無法確定下一個cpu區間的長度。可以是搶佔和非搶佔的。搶佔SJF調度又稱爲最短剩餘時間優先調度。
解決:近似SJF調度:t(n+1)=ax(n)+t(n),x(n)爲第n個區間cpu的長度。
c、優先級調度
特點:可搶佔,可非搶佔。
問題:無窮阻塞/飢餓,即優先級低的可能一直得不到cpu
解決:老化技術,隨着時間優先級提高。
d、輪轉法調度(RR)
特點:分配時間片,是可搶佔的(運行時間超過時間片,則被搶佔)
缺點:平均等待時間較長。
e、多級隊列調度
特點:多個隊列,每個隊列的優先級不同,並且在不同的隊列可以採用不同的調度算法。
缺點:進程無法在不同的隊列中進行移動。
f、多級反饋隊列調度
特點:進程無法在不同的隊列中進行移動,這是最通用的調度算法,但也最複雜。
(4)多處理器調度
a、非對稱多處理,(由一個處理器處理所有的調度等)
b、對此多處理(smp),每個處理器自我調度。
(5)處理器親和性
本質就是努力是一個進程在一個處理器中運行,而不在處理器之間進行移動。
原因:移動之後得重新建立緩存,時間開銷大。
(6)負載平衡
目標:是cpu能夠平衡利用,不會導致某個cpu負載過重,而另外的空閒。
兩種方法:push migration和pull migration.
負載平衡和處理器親和性是衝突的。
(7)對稱多線程(超線程)
思路:將一個物理處理器分成多個邏輯處理器,超線程是基於硬件而不是軟件的,每個邏輯處理器有自己的架構狀態。