Linux---進程的調度算法

系統中的cpu資源是有限的,當同時有多個進程處於就緒狀態,要競爭cpu資源時,操作系統就要負責完成分配資源的任務。在操作系統中,由調度程序來完成這一選擇分配的工作,調度程序所使用的算法即是調度算法。
調度算法一般有以下幾種:
一、 先來先服務算法(FCFS:First Come,First Served)
1> 算法原理: 依據進程進入就緒隊列的先後順序排列,誰先排隊,就先執行誰,誰就先搶佔CPU資源。
2> FCFS算法週轉時間
示例:有3個進程,任務到達時間爲12,3,3
這裏寫圖片描述
從上述例子的對比可以看出:週轉時間跟任務到達順序有關。
3> 優點:易於理解且實現簡單,只需要一個隊列(FIFO),且相當公平
4>缺點:平均等待時間波動較大,(例如上述例子,短進程排在長進程後面,等待時間長),排的位置對算法的影響很大;IO資源和CPU資源的利用率較低(比如,有一個CPU密集型進程一直算,會導致IO閒置)。
二、 短作業優先算法(SJF:Shortest Job First)
1> 算法原理:短作業優先又稱爲“短進程優先”SPN(Shortest Process Next),它是選擇就緒隊列中執行時間最短的進程佔用CPU進入運行狀態。
2> 算法優點:相比FCFS 算法,該算法可改善平均週轉時間和平均帶權週轉時間,縮短進程的等待時間,提高系統的吞吐量。
3> 缺點:連續的短進程會使長進程飢餓,無法獲得CPU資源
三、 最高響應比優先算法(HRRN,Highest Response Ratio Next)
最高響應比優先法是對FCFS方式和SJF方式的一種綜合平衡。FCFS方式只考慮每個作業的等待時間而未考慮執行時間的長短,而SJF方式只考慮執行時間而未考慮等待時間的長短。而HRN調度策略同時考慮每個作業的等待時間長短和估計需要的執行時間長短,從中選出響應比最高的作業投入執行。這樣,即使是長作業,隨着它等待時間的增加,也就有機會獲得調度執行。這種算法是介於FCFS和SJF之間的一種折中算法。
1> 算法原理:選擇就緒隊列中響應比R值最高的進程進入運行狀態,關注進程的等待時間
R = (W + S) / S,W:等待時間,S:執行時間
2> 優點:等待時間長的進程也會獲得CPU資源,能夠避免飢餓現象,兼顧了長短作業。
3> 缺點:每次都要計算響應比,開銷大,適用於批處理系統。
四、 時間片輪轉算法(RR,Round-Robin )
1> 算法原理:讓就緒進程按照FCFS原則排成一個隊列,將CPU資源分配給隊首進程,讓其執行一個時間片。在一個時間片結束時,發生時鐘中斷,調度程序據此暫停當前進程的執行,將其送到就緒隊列的末尾,並通過上下文切換執行當前的隊首進程,進程可以未使用完一個時間片,就出讓CPU(如阻塞)。 時間片輪轉調度不考慮進程等待時間和執行時間,屬於搶佔式調度。
2> 優點:簡單易行、平均響應時間短。
3>缺點:算法開銷大,額外的上下文切換較費時,等待時間較長,適用於分時系統。
五、 多級反饋隊列算法(Multilevel Feedback Queue)
1>算法描述:在系統中設置多個就緒隊列,併爲每個隊列賦予不同的優先級 ,第一個隊列優先級最高,其餘隊列優先級逐個降低。該算法爲不同隊列的進程所賦予的執行時間片的小也不同,優先級愈高,時間片愈小。採用FCFS原則。按隊列優先級進行調度。
2>優點:兼顧長短作業,有較好的響應時間,可行性強,適用於各種作業環境。
在多級反饋隊列調度算法中,如果規定第一個隊列的時間片略大於多數人機交互所需之處理時間時,便能夠較好的滿足各種類型用戶的需要。
六、 公平共享調度算法(FSS:Fair Share Scheduling)
分配給每個進程相同的處理機時間,顯然,這對諸進程而言,是體現了一定程度的公平,但各個用戶所擁有的進程數不同,就會發生對用戶的不公平問題。在該調度算法中,調度的公平性主要是針對用戶而言,是所有用戶能獲得相同的處理機時間。

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