處理器排程

2021-07-26 12:41:20 字數 3501 閱讀 2313

1)cpu排程的相關概念

a.cpu排程——其任務是控制、協調程序對cpu的競爭;即按一定的排程演算法從就緒佇列中選擇乙個程序,把cpu的使用權交給被選中的程序;如果沒有就緒程序,系統會安排乙個系統空閒程序或idle程序

b.cpu要解決的三個問題

cpu排程的時機(就緒佇列的改變引發了重新排程):事件發生—》當前執行的程序暫停執行—》硬體機制響應後—》進入作業系統,處理相應事件—》結束處理後:某些程序的狀態會發生變化,也可能又建立了一些新的程序—》就緒佇列改變了—》需要程序排程根據預設的排程演算法從就緒佇列選乙個程序

4中情況(核心對中斷/異常/系統呼叫處理後返回到使用者態時)

程序正常終止或者由於某種錯誤而終止

新程序建立或乙個等待程序變成就緒

當乙個程序從執行態進入阻塞態

當乙個程序從執行態變為就緒態

排程過程——程序切換

程序排程從就緒佇列選擇了要執行的程序:這個程序可以是剛剛被暫停執行的程序,也可能是另乙個新的程序

程序切換:是指乙個程序讓出cpu,由另乙個程序占用cpu的過程,包括了對原來程序各種狀態的儲存和對新程序各種狀態的的恢復

*切換全域性目錄以載入乙個新的位址空間

*切換核心棧和硬體上下文,其中硬體上下文包括了核心執行新程序需要的全部資訊,如cpu相關暫存器

間接開銷:快取記憶體(cash)、緩衝區快取(buffer cache)和tlb(translation lookup buffer)失效

cpu排程演算法設計:

衡量排程演算法的指標:

吞吐量——每單位時間完成的程序數目

周轉時間——每個程序從提出請求到執行完成的時間

響應時間——從提出請求到第一次回應的的時間

cpu利用率——cpu做有效工作的時間比例

等待時間——每個程序在就緒佇列中等待的時間

程序的優先順序(數)

選擇時間片考慮的因素:程序切換的開銷;對響應時間的要求;就緒程序個數;cpu能力;程序的行為

2)批處理系統的排程演算法(吞吐量,周轉時間,cpu利用率,公平、平衡)

a.先來先服務(fcfs排程演算法):按照程序就緒的先後順序使用cpu,非搶占

優點:公平,實現簡單

缺點:長程序後面的短程序需要等很長時間,不利於使用者體驗

b.最短作業優先(sjf排程演算法shortest job first):具有最短完成時間的程序優先執行,非搶占式

優點:(在所有程序同時可執行時,)採用sjf排程演算法可以得到最短平均週期時間

缺點:不公平,源源不斷的短任務到來,可能使長任務長時間得不到執行,產生「飢餓」現象

c.對短剩餘時間優先:sjf搶占式版本,即當乙個新就緒的程序比當前執行程序具有更短完成時間時,系統搶占當前程序,選擇新就緒的程序執行

d.最高響應比優先(highest response ratio next)(折衷權衡):排程時,首先計算每個程序的響應比r;之後,總是選擇r最高的程序執行

3)互動式系統中採用的排程演算法(響應時間,公平、平衡)

a.時間片輪轉排程演算法:(不適合相同大小的程序)

目標:改善了短任務平均響應時間

解決問題的思路:週期性切換;為每個程序分配乙個時間片;時鐘中斷——》輪轉

典型的時間片長度:10ms~100ms

優點:公平;有利於互動式計算,響應時間快

缺點:由於程序切換,時間片輪轉演算法要花費較高的開銷

b.最高優先順序排程:選擇優先順序最高的程序投入執行

通常:系統程序優先順序高於使用者程序;前台程序優先順序高於後台程序;作業系統更偏好i/o型程序

優點:簡單

缺點:不公平,有飢餓現象

優先順序反轉問題:乙個低優先順序程序持有乙個高優先順序程序所需要的資源,使得高優先順序程序等待低優先順序程序執行

影響:系統錯誤;高優先順序程序停滯不前,導致系統效能降低

解決方案:設定優先順序上限;優先順序繼承;使用中斷禁止

c.多級反饋佇列:設定多個就緒佇列,第一級佇列優先順序最高

給不同就緒佇列中程序分配長度不同的時間片,第一級佇列時間片最小,隨著佇列優先順序別的降低,時間片增大

當第一級隊列為空時,在第二級佇列排程,以此類推

各級佇列新建立程序就緒後,進入第一級佇列

程序用完時間片而放棄cpu,進入下一級就緒佇列

由於阻塞而放棄cpu的程序進入相應的等待佇列,一旦等待的事件發生,該程序回到原來一級就緒佇列(隊尾or隊首……)

d.最短程序優先

4)多處理器排程演算法設計

不僅要決定選擇哪個程序執行,還要決定在哪個cpu上執行

要考慮程序在多個cpu之間遷移時的開銷(快取記憶體失效,tlb失效,盡可能使程序總在同乙個cpu上執行)

考慮負載均衡問題

5)典型作業系統所採用的排程演算法

a.unix 動態優先數法

b.5.3bsd 多級反饋佇列法

c.linux 搶占式排程

d.windows 基於優先順序的搶占式多任務排程

排程單位是執行緒,採用基於動態優先順序的、搶占式排程,結合時間配額的調整

就緒執行緒按優先順序進入相應佇列

系統總是選擇優先順序最高的就緒執行緒執行

同一優先順序的各執行緒按時間片輪轉進行排程

多cpu系統中允許多個執行緒並行執行

引發執行緒排程的條件:乙個執行緒的優先順序改變了;乙個執行緒改變了它的親和處理機集合

執行緒正常終止或由於某種錯誤而終止

新執行緒建立或乙個等待執行緒變成就緒

當乙個執行緒從執行態進入阻塞態

當乙個執行緒從執行變為就緒態

windows使用32個執行緒優先順序,分為3類

16~31:實時優先順序執行緒不改變其優先順序

1~15:可變優先順序執行緒:其優先順序可以在一定範圍內公升高或降低(基本優先順序和當前優先順序)

0:零頁執行緒:用於對系統中空閒物理頁面清零

執行緒的時間配額:時間配額不是乙個時間長度值,而乙個稱為配額單位的整數

乙個執行緒用完了自己的時間配額時,如果沒有其他相同優先順序的執行緒,windows將重新給該執行緒分配乙個新的時間配額,

讓它繼續執行

windows會提公升這樣的程序的當前優先順序(針對可變優先順序範圍內的執行緒優先順序)

i/o操作完成

訊號量或事件等待結束

前台程序中的執行緒完成乙個等待操作

由於窗**動而喚醒視窗執行緒

執行緒處於就緒態超過了一定時間還沒有執行——「飢餓」現象

e.solaris 綜合排程演算法

處理器排程

處理器排程演算法設計從以下幾個方面著手 資源利用率 吞吐率 公平性 響應時間 周轉時間 截止時間的保證 優先權原則等等。cpu利用率 cpu有效工作時間 cpu總的執行時間 cpu總執行時間 cpu有效工作時間 cpu空閒等待時間 吞吐率 單位時間內cpu處理的作業數 公平性 確保程序不會出現餓死現...

處理器排程

處理器排程的目標是以滿足系統目標 如響應時間 吞吐率 處理器效率 的方法,把程序分配到乙個或多個處理器中執行。處理器排程有三個層次 長程排程 又稱高階排程,作業排程,其決定是否能加入待執行的程序池中 中程排程 又稱中級排程,平衡負載排程,其決定加入部分或全部在記憶體中的程序集合中 短程排程 又稱低階...

處理器排程

1 高階排程 也稱作業排程或者長程排程。根據作業排程演算法選擇外存上處於後備佇列中的某些作業調入記憶體,為它們分配必要的資源 建立相關程序。2 中級排程 也稱平衡排程或者中程排程。涉及程序的內外存間的排程,當主存資源緊張將暫不執行的程序調至外存,程序 掛起 狀態,當程序又具備執行條件且主存資源又空閒...