1. 程式人生 > >幾種常見的排程演算法

幾種常見的排程演算法

一、處理機排程相關基本概念

1、排程方式和排程演算法的若干準則
1)面向使用者的準則:週轉時間短(CPU執行用時Ts、週轉時間T=Ts+Tw、帶權週轉時間W= T/Ts)、響應時間快、均衡性、截止時間的保證、優先權準則
2)面向系統的準則:系統吞吐量高、處理機利用率好、各類資源的平衡利用
3)批處理系統為照顧為數眾多的短作業,應採用短作業優先的排程演算法;分時系統為保證系統具有合理的響應時間,應採用輪轉法進行排程

二、常用排程演算法

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、高優先順序搶佔時,被搶佔的程序放回原就緒佇列末尾。

在這裡插入圖片描述

在這裡插入圖片描述