操作系統-調度算法

1:先來先服務調度算法【FCFS】
(1):按照作業提交,或進程變爲就緒狀態的先後次序分派CPU
(2):新作業只有噹噹期那作業或進程執行完成或阻塞才獲得CPU運行
(3):被喚醒的作業或進程不立即恢復執行,通常等到當前作業或進程讓出CPU(默認非搶佔方式)
(4):有利於CPU繁忙型的作業,而不利於I/O繁忙的作業(進程)
在這裏插入圖片描述
2:短作業【進程】優先調度SJF(非搶佔)/SPF(搶佔)
(1)平均週轉時間、平均帶權週轉時間都有明顯改善。SJF/SPF調度算法能有效的降低作業的平均等待時間,提高系統吞吐量。
(2)未考慮作業的緊迫程度,因而不能保證緊迫性作業(進程)的及時處理、對長作業的不利、作業(進程)的長短含主觀因素,不一定能真正做到短作業優先。
在這裏插入圖片描述
3、高優先權優先調度算法HPF
(1)兩種方式:非搶佔式優先權算法、搶佔式優先權算法(關鍵點:新作業產生時)
(2)類型:靜態優先權:創建進程時確定,整個運行期間保持不變。動態優先權:創建進程時賦予的優先權可隨進程的推進或隨其等待時間的增加而改變。
(3)高響應比優先調度算法HRRN
HRRN爲每個作業引入動態優先權,使作業的優先級隨着等待時間的增加而以速率a提高:優先權 =(等待時間+要求服務時間)/要求服務時間= 響應時間 / 要求服務時間。
什麼時候計算各進程的響應比優先權?(作業完成時、新作業產生時(搶佔、非搶佔)、時間片完成時、進程阻塞時)
4、基於時間片的輪轉調度算法RR
(1)時間片輪轉算法
過程:
1、排成一個隊列。
2、每次調度時將CPU分派給隊首進程。
3、時間片結束時,發生時鐘中斷。
4、暫停當前進程的執行,將其送到就緒隊列的末尾,並通過上下文切換執行當前就緒的隊首進程。
說明:
1、進程阻塞情況發生時,未用完時間片也要出讓CPU。
2、能夠及時響應,但沒有考慮作業長短等問題。
3、系統的處理能力和系統的負載狀態影響時間片長度。
(2)多級反饋隊列算法FB
過程:
1、準備調度:先將它放入第一個隊列的末尾,按FCFS原則排隊等待調度。
2、IF時間片內完成,便可準備撤離系統。
3、IF時間片內未能完成,調度程序便將該進程轉入第二隊列的末尾等待再次被調度執行。
4、當第一隊列中的進程都執行完,系統再按FCFS原則調度第二隊列。在第二隊列的稍放長些的時間片內仍未完成,再依次將它放入第三隊列。
5、依次降到第n隊列後,在第n隊列中便採取按時間片輪轉的方式運行。
說明:
1、設置多個就緒隊列,各隊列有不同的優先級,優先級從第一個隊列依次降低。
2、賦予各隊列進程執行時間片大小不同, 優先權越高,時間片越短。
3、僅當優先權高的隊列(如第一隊列)空閒時,調度程序才調度第二隊列中的進程運行。
4、高優先級搶佔時,被搶佔的進程放回原就緒隊列末尾。
在這裏插入圖片描述
在這裏插入圖片描述

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