在沒有進行程序排程之前,乙個程序始終允許以最大化cpu利用率執行。這種想法比較簡單。也存在時間浪費的問題。比如乙個程序如果要等待i/o請求,那麼此時的cpu資源處於空閒狀態,如果沒有搶占或者排程,其他程式就算是計算密集型也要一直等待這個程序請求i/o完成並執行結束才可以占用cpu資源。因此,程序排程是作業系統設計的乙個重要部分,它允許乙個程序等待時,另乙個程序接管cpu使用權。
先來先服務是cpu排程演算法中最簡單的一種方案。它要求先請求cpu的程序首先分配cpu。這個策略可以通過fifo佇列很容易實現。當乙個新的程序就緒時,它的pcb就會被鏈結到佇列的尾部。當cpu空閒時,它就會分配資源給佇列頭部的程序,並且將該程序從佇列中移除。fcfs的缺點是平均等待時間往往比較長。可能會發生一種情況是:cpu密集型的程序在i/o密集型的前邊執行,那麼所有的i/o密集程序都要等待這個cpu密集程序執行完畢,但是眾所周知cpu密集程序又需要占用cpu很長一段時間,而i/o密集的卻占用很短時間。這就造成了很多時間短的程序等待乙個時間十分長的程序,這個執行緒被戲稱為護航效果
舉個例子:如果有3個程序按照p1、p2、p3進入就緒佇列,他們的執行時間如下:
程序執行時間
p124p23
p33則執行結果如下:
舉個例子:如果有3個程序按照p1、p2、p3進入就緒佇列,他們的執行時間如下:
程序執行時間p16
p28p37
p43則執行結果如下:
故名思議,優先順序排程演算法會給每乙個程序乙個優先順序。具有高優先順序的程序會比具有低優先順序的程序提前分配到cpu資源,具有相同的優先順序按照fcfs進行排程。對於乙個數字0是高優先順序還是低優先順序,各種地方都有不同的說法,這裡用低數字表示高優先順序。
舉個例子:
程序執行時間
優先順序p1103
p211p3
24p41
5p552
則執行結果如下:
輪轉排程演算法通常為分時系統設計。他可以給每乙個程序分配乙個時間量或時間片。時間片的大小通常是10~100ms。就緒佇列作為乙個迴圈佇列,cpu排程程式迴圈為每乙個程序分配乙個不超過時間片的cpu。如果該程序所需要的時間大於這個時間片,那麼當時間片大小的時間執行結束之後,該程式就要中斷,並放入到佇列的尾部等待下一次的時間片分配。
多級佇列排程演算法允許多個不同的演算法用於不同的程序,比如前台程序可以使用rr排程保證使用者的體驗感,後台程序可以使用fcfs排程進行批處理作業。此外,佇列之間應該也有排程,這通常採用固定的優先順序進行排程。比如,前台佇列的優先順序通常高於後台佇列,這就表示前台佇列中的所有程序都會先於後台佇列中的程序執行。但是如果乙個程序只能在乙個佇列中進行排程不可以進行佇列之間的轉移。
多級佇列排程通常將乙個程序固定在乙個佇列中,但是多級反饋佇列允許程序在不同的佇列之間進行轉移。這種方案將i/o密集型的程序放在優先順序高的佇列上,將占用cpu多的程序放在優先順序更低的佇列上。當乙個程序在上乙個佇列中沒有占用足夠的cpu時間就可以轉移到其他的佇列中獲取cpu資源繼續執行。這種形式的老化可以阻止飢餓的發生。
以上幾種方法的小結:
排程演算法
搶占非搶占
fcfs否是
sjf是是rr
是否優先順序演算法是是
作業系統 處理機排程概念
乙個作業被提交後,必須經過處理機排程,才能獲得處理機執行,通常經過三個排程 高階排程 高階排程,長程排程 中級排程 中程排程 低階排程 短程排程 根據某種演算法,把外村上處於後備佇列中的那些作業調入記憶體,排程物件是作業 就是一些程式,資料,還有一些作業說明書。作業需要執行哪些步驟執行完。每乙個步驟...
作業系統之處理機排程
1.處理機即計算機的處理器,簡單理解就是cpu,多處理機指多核,即多個cpu同時工作,隨著工藝的提高,多個cpu可以整合在一塊晶元上,比如兩核,四核處理器。2.作業和程序的區別 1 作業是乙個比程式更加廣泛的概念,包含程式 資料和作業說明書 2 程序包含pcb 程式和資料集合 所以程式是程序的一部分...
作業系統筆記 處理機排程
處理機排程概念 1 多道程式環境下,動態的把處理機分配給就緒佇列中的乙個程序使之執行。2 提高處理機的利用率 改善系統效能,很大程度上取決於處理機排程的效能。3 處理機排程便成為os設計的中心問題之一。分配的任務由處理機排程程式完成。排程排程的實質就是一種資源分配。不同的系統和系統目標,通常採用不同...