程序排程演算法

2021-09-02 08:18:18 字數 2429 閱讀 1851

什麼是cpu排程?

簡單的來說,cpu排程就是就緒佇列裡面有好多程序,應該選擇誰來執行?這個選擇的過程就是排程

怎麼樣才能讓程序滿意?

盡快結束任務:周轉時間(從任務進入到任務結束)少

使用者操作響應快:響應時間(操作發生到響應)少

系統內耗時間少:吞吐量(完成的任務量)大

前台任務更關注響應時間,後台任務更關注周轉時間

他們之間相互有影響,

例如乙個前台任務要想響應時間少,就會導致切換次數過多,繼而使得系統 內耗變大,吞吐量就會變小,周轉時間也就更長了

所以他們之間是有矛盾的,排程就是為了這種他們的矛盾

1. fcfs先來先服務排程演算法

誰先來就先執行誰

按照作業提交,或程序變為就緒狀態的先後次序分派cpu;新作業只有當當前作業或程序執行完或阻塞才獲得cpu執行

被喚醒的作業或程序不立即恢復執行,通常等到當前作業或程序出讓cpu。(所以,預設即是非搶占方式)

有利於cpu繁忙型的作業,而不利於i/o繁忙的作業(程序)。

缺點:如果有個程序它只是幹一些很簡單的事情,你卻讓它等很久,這就有點不太好了

2. 短作業優先

最短程序優先是乙個非搶占策略,他的原則是下一次選擇預計處理時間最短的程序,因此短程序將會越過長作業,跳至佇列頭。該演算法即可用於作業排程,也可用於程序排程。但是他對長作業不利,不能保證緊迫性作業(程序)被及時處理,作業的長短只是被估算出來的。

未考慮作業的緊迫程度,因而不能保證緊迫性作業(程序)的及時處理、對長作業的不利、

3. 時間片輪轉法

過程:1、排成乙個佇列。2、每次排程時將cpu分派給隊首程序。3、時間片結束時,發生時鐘中斷。4、暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前就緒的隊首程序。

說明:1、程序阻塞情況發生時,未用完時間片也要出讓cpu。2、能夠及時響應,但沒有考慮作業長短等問題。3、系統的處理能力和系統的負載狀態影響時間片長度。

輪轉法是基於適中的搶占策略的,以乙個週期性間隔產生時鐘中斷,當中斷發生後,當前正在執行的程序被置於就緒佇列中,然後基於先來先去服務策略選擇下乙個就緒作業的執行。這種技術也稱為時間片,因為每個程序再被搶占之前都給定一片時間。

4. 優先順序

優先權型別

高優先權排程演算法,需要比較作業或程序的優先順序,所以我們需要了解一下優先順序,優先權分為靜態優先權、動態優先權

動態優先權

概念:在建立程序時賦予的優先權是隨程序的推進或隨其等待時間的增加而改變,以獲得更好的排程效能。可規定,在就緒佇列中的程序,隨其等待時間的增長,其優先權以速率a提高

特徵:具有相同優先權初值的程序,則最先進入就緒佇列,其將因其動態優先權變得最高而優先獲得處理機,此即fcfs演算法;具有各不相同的優先權初值的就緒程序,則優先權初值低的程序,在等待了足夠的時間後,其優先權便可能公升為最高,從而可以獲得處理機

注意:當採用搶占式優先權排程演算法時,如果再規定當前程序的優先權以速率b下降,則可防止乙個長作業長期地壟斷處理機

5. 最短剩餘時間優先

最短剩餘時間是針對最短程序優先增加了搶占機制的版本。在這種情況下,程序排程總是選擇預期剩餘時間最短的程序。當乙個程序加入到就緒佇列時,他可能比當前執行的程序具有更短的剩餘時間,因此只要新程序就緒,排程程式就能可能搶占當前正在執行的程序。像最短程序優先一樣,排程程式正在執行選擇函式是必須有關於處理時間的估計,並且存在長程序飢餓的危險。

6. 最高響應比優先

根據比率:r=(w+s)/s (r為響應比,w為等待處理的時間,s為預計的服務時間)

如果該程序被立即呼叫,則r值等於歸一化周轉時間(周轉時間和服務時間的比率)。r最小值為1.0,只有第乙個進入系統的程序才能達到該值。排程規則為:當前程序完成或被阻塞時,選擇r值最大的就緒程序,它說明了程序的年齡。當偏向短作業時,長程序由於得不到服務,等待時間不斷增加,從而增加比值,最終在競爭中贏了短程序。

什麼時候計算各程序的響應比優先權?(作業完成時、新作業產生時(搶占、非搶占)、時間片完成時、程序阻塞時)

和最短程序優先、最短剩餘時間優先一樣,使用最高響應比策略需要估計預計服務時間。

7. 多級反饋佇列演算法fb

過程:1、準備排程:先將它放入第乙個佇列的末尾,按fcfs原則排隊等待排程。2、if時間片內完成,便可準備撤離系統。3、if時間片內未能完成,排程程式便將該程序轉入第二佇列的末尾等待再次被排程執行。4、當第一佇列中的程序都執行完,系統再按fcfs原則排程第二佇列。在第二佇列的稍放長些的時間片內仍未完成,再依次將它放入第三佇列。5、依次降到第n佇列後,在第n佇列中便採取按時間片輪轉的方式執行。

說明:1、設定多個就緒佇列,各佇列有不同的優先順序,優先順序從第乙個佇列依次降低。2、賦予各佇列程序執行時間片大小不同, 優先權越高,時間片越短。3、僅當優先權高的佇列(如第一佇列)空閒時,排程程式才排程第二佇列中的程序執行。4、高優先順序搶占時,被搶占的程序放回原就緒佇列末尾。

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程演算法

排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...

程序排程演算法

先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...