4 處理器排程

2021-08-03 18:23:52 字數 4199 閱讀 2429

4.1 cpu排程的相關概念

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

cpu排程所面臨的場景:系統中有n個程序,等待上cpu執行,而有m個cpu,m>=1.而cpu需要決策給哪乙個程序分配哪 乙個cpu。

cpu排程主要解決三個問題:

按什麼原則選擇下乙個要執行的程序——排程演算法;何時進行選擇——排程時機;如何讓被選中的程序上cpu執行——排程過程(程序的上下文切換)。

cpu排程的時機為核心對中斷/異常/系統呼叫處理後返回到使用者態時

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

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

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

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

程序排程程式從就緒佇列選擇了要執行的程序:這個程序可以是剛剛被暫停執行的程序,也可能是另乙個新的程序。如果是新的程序,則需進行程序切換。

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

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

切換過程包括了對原來執行程序各種狀態的儲存以及對新程序的各種狀態的恢復。

例如:如果程序a下cpu,b上cpu,則上下文切換具體步驟為:

儲存程序a的上下文環境(程式計數器、程式狀態字、其他暫存器);

用新狀態和其他相關資訊更新程序a的pcb;

把程序a移至合適的佇列(就緒、阻塞);

將程序b的狀態設定為執行態;

從程序b的pcb中恢復上下文(程式計數器、程式狀態字、其他暫存器)。

上下文切換開銷:

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

cpu排程演算法的設計:

效能:周轉時間一點,響應時間一點,緊急任務可以在最後期限完成;

其他:對自己的程式什麼時候執行具有可**性

效能:吞吐量大一點,cpu利用率高一點;

公平性,強制優先順序,平衡資源。

排程演算法衡量指標:

吞吐量(throughput):每單位時間完成的程序數目;

周轉時間tt(turnaround time):每個程序從提出請求到執行完成時間;

響應時間rt(response time):從提出請求到第一次回應的時間;

cpu利用率(cpu utilization):cpu有效工作的時間比例;

等待時間(waiting time):每乙個程序在就緒佇列(ready queue)中等待的時間。

4.2設計排程演算法前的要點討論

設計排程演算法時要考慮:

程序控制塊pcb中需要記錄哪些與cpu排程有關的資訊

程序優先順序及就緒佇列的組織

搶占式排程與非搶占式排程

i/o密集型與cpu密集型程序

時間片程序的優先順序(數)

優先順序:表現出程序的重要性和緊迫性;

搶占與非搶占——指占用cpu的方式

i/o密集型與cpu密集型程序,按程序執行過程中的行為劃分:

時間片——乙個時間段,分配給排程上cpu的程序,確定了允許該程序執行的時間長度。選擇時間片應考慮:

4.3批處理系統中常用的排程演算法——考慮吞吐量、周轉時間、cpu利用率、公平平衡

4.4互動式系統的排程演算法——考慮響應時間,公平平衡

如何選擇合適的時間片

如果時間太長,則會降級為先來先服務演算法,延長短程序的響應時間;

如果時間太短,即小於典型的互動時間,程序切換浪費cpu時間。

時間片輪轉排程演算法

優點:公平,有利於互動式計算,響應時間快,對不同大小的程序是有利的;

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

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

優先順序可以是靜態不變的,也可以動態調整,優先數可以決定優先順序;

就緒佇列可以按照優先順序組織;

實現簡單:不公平,容易產生飢餓現象;

基於優先順序的搶占式排程演算法,容易產生優先順序反轉問題,又稱優先順序反置、翻轉、倒掛,其現象為:乙個低優先順序程序持有乙個高優先順序程序所需要的資源,使的高優先順序程序等待低優先順序程序執行。優先順序反轉問題,是乙個系統錯誤,會使高優先順序程序停滯不前,導致系統效能降低,可以通過設定優先順序上限、優先順序繼承、使用中斷禁止三種方式來解決此問題。

設定多個就緒佇列,第一級佇列優先順序最高;

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

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

各級佇列按照時間片輪轉方式進行排程;

當乙個新建立程序就緒後,進入第一級佇列;

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

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

若允許搶占,則當有乙個優先順序更高的程序就緒時,可以搶占cpu,被搶占的程序回到原來一級就緒佇列末尾。

多處理器排程演算法需要考慮的問題:

快取記憶體失效、tlb失效的開銷;

盡可能使程序總是在同乙個cpu上執行;

考慮負載均衡問題。

4.5典型系統所採用的排程演算法

unix採用動態優先數法,5.3bsd採用多級反饋佇列法,linux採用搶占式排程演算法,windows採用基於優先順序的搶占式多任務排程演算法,solaris採用綜合排程演算法 。

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

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

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

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

windows系統引發執行緒排程的條件:

乙個執行緒的優先順序改變了;

有個執行緒改變了它的親和處理機集合;

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

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

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

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

windows使用32個執行緒優先順序,分成三類:

實時優先順序(16-31):實時優先順序執行緒不改變其優先順序;

可變優先順序(1-15):其優先順序可以在一定範圍內公升高或降低,可以區分基本優先順序和當前優先順序;

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

時間配額:不是乙個時間長度值,而是乙個稱為配額單位的整數。乙個執行緒用完了自己的時間配額時,如果沒有其他相同優        級的執行緒,windows將重新給該執行緒分配乙個新的時間配額,讓它繼續執行。

windows執行緒排程策略:

主動切換;

搶占。當執行緒被搶占時,它被放回相應優先順序的就緒佇列的隊首,處於實時優先順序的執行緒在被搶占時,時間配額被重置為乙個完整的時間配額,處於可變優先順序的執行緒在被搶占時,時間配額不變,重新得到cpu後將執行剩下的時間配額。

時間配額用完。假設執行緒a的時間配額用完:a.a的優先順序沒有降低,如果佇列中有其他就緒執行緒,選擇下乙個執行緒執行,a回到原來的就緒佇列末尾,如果佇列中沒有其他就緒執行緒,系統給執行緒a分配乙個新的時間配額,讓它繼續執行;b.a的優先順序降低了,windows將選擇乙個更高優先順序的執行緒執行。

windows會針對下列五種情況,提公升執行緒的當前優先順序:

i/o操作完成;訊號量或時間等待結束;前台程序中的執行緒完成乙個等待操作;由於窗**動而喚醒視窗執行緒;執行緒處於就緒態超過了一定的時間還沒有執行——飢餓現象。

8086 8088 處理器結構

8088共有8個通用暫存器,1個標誌暫存器 4個段暫存器和1個指令指標暫存器。一 通用暫存器 資料暫存器 共ax bx cx dx四個,每個暫存器即可作為16位暫存器,又可拆分為兩個8位暫存器,此時記為ah al bh bl等。ax ah al 累加器accumulator bx bh bl 基址暫...

蘋果A7處理器

2013年9月14日電,在蘋果公司新品發布會上,最為亮眼的當屬 iphone 5s搭載的採用64位架構的a7處理器了。菲爾 席勒在介紹iphone 5s時更是將其冠以 全球首款搭載64位處理器的手機 的名號,並強調指出a7處理器的效能是a6處理器的兩倍。菲爾 席勒表示 這是有史以來第乙個移動端64位...

64位處理器與32位處理器的區別

第二,要求配置不同。64位作業系統只能安裝在64位電腦上 cpu必須是64位的 同時需要安裝64位常用軟體以發揮64位 x64 的最佳效能。32位作業系統則可以安裝在32位 32位cpu 或64位 64位cpu 電腦上。當然,32位作業系統安裝在64位電腦上,其硬體恰似 大馬拉小車 64位效能就會大...