程序切換就是cpu資源當前占用者的切換,通過程序切換實現cpu的時分復用。程序切換時需要儲存當前程序在pcb中的執行上下文,同時恢復下乙個程序的執行上下文。而處理機排程就是要實現從程序就緒佇列中挑選下乙個占用cpu執行的程序;如果存在多個可用cpu,還要從中挑選就緒程序可用的cpu資源。因此其中要關注兩個內容:排程策略與排程時機。
有程序從執行狀態切換到等待狀態(非搶占);有程序退出(非搶占);正在執行的程序時間片用完(搶占);程序由等待轉換到就緒(搶占)。
程序一般是在cpu計算與i/o操作間交替執行。排程策略需要選取合適的時間片大小,由於程序使用cpu進行計算的單次時間往往是較短的,時間片的選擇應盡量不要打斷單次計算。對排程演算法優劣判斷的準則:1、cpu使用率,使用率應該盡量高;2、吞吐量,單位時間內完成的程序數量;3、周轉時間,程序從初始化到結束/等待的總時間,這是使用者關心的;4、程序在僅需佇列的總時間,應該盡量降低;5、響應時間,從提交請求到產生響應的時間應該盡量短。
上述目標有些是相互制約的,因此乙個合理的排程演算法應該統籌兼顧。下面對具體的排程演算法進行介紹。
1.先來先服務
2.短程序優先演算法,按照程序需要的執行時間選擇
3.最高響應比優先演算法,按照就緒佇列內的等待時間長短選擇
4.時間片輪轉演算法,按照先來先服務,但每個程序執行時間不超過時間片長度,超出會被搶占。經驗規則是維持上下文切換開銷處於1%以內,大小通常在10ms左右。
5.多級反饋佇列演算法,維護多個就緒程序佇列,對不同佇列可以使用不同排程策略
6.公平共享排程演算法,按照程序占用資源情況選擇
對於實時系統來說,有兩種排程策略,一是靜態排程策略,乙個是動態排程策略。靜態排程策略是指按照程序執行時間長短進行排程,執行時間短的先執行。動態排程策略是按照程序截止時間進行排程,截止時間越早的先執行。
多處理機是指由多個處理機組成乙個多處理機系統,處理機之間可以實現負載共享。其中每個處理器有自己的排程程式,排程程式對共享資源的訪問需要進行同步。多處理機排程策略中最重要的一點是乙個程序應該分配給哪乙個處理機。靜態程序分配是程序從開始到結束都分配到乙個固定的處理機上執行,之後就是在每個處理機上的單處理機排程演算法,但這會導致處理機利用率不均。動態程序分配則是乙個程序可以分配到任意空閒處理機執行,所有處理機共享乙個就緒佇列,排程開銷較大,但負載均衡。
優先順序反置是指高優先順序程序要請求的資源被低優先順序程序占用而被阻塞,此時中優先順序程序反而搶占了cpu導致高優先順序程序始終無法執行。針對這一現象有兩種解決方案:一是優先順序繼承,導致高優先順序程序阻塞的低優先順序程序會暫時繼承高優先順序程序的優先順序,避免被中優先順序程序搶占;二是優先順序天花板協議,占有資源的程序和所有可能申請該資源的程序的優先順序比較,設定成其中最高優先順序對應的優先順序,這樣就不會有程序阻止他使用這個資源,可能會出現優先順序濫用的情況。
作業系統學習 處理機排程
處理機排程 指當程序狀態改變,比如從執行轉為等待,處理機為了繼續保持cpu的高使用率,會把其他需要執行的程式調到cpu中執行。排程的時機 對於非搶占系統,只能在當前程序主動放棄cpu時 處理機排程的目標 排程演算法 實時排程 任務對時間的要求很高,任務有硬時限和軟時限的區分。分為靜態排程演算法,經過...
作業系統筆記 處理機排程
處理機排程概念 1 多道程式環境下,動態的把處理機分配給就緒佇列中的乙個程序使之執行。2 提高處理機的利用率 改善系統效能,很大程度上取決於處理機排程的效能。3 處理機排程便成為os設計的中心問題之一。分配的任務由處理機排程程式完成。排程排程的實質就是一種資源分配。不同的系統和系統目標,通常採用不同...
作業系統 處理機排程概念
乙個作業被提交後,必須經過處理機排程,才能獲得處理機執行,通常經過三個排程 高階排程 高階排程,長程排程 中級排程 中程排程 低階排程 短程排程 根據某種演算法,把外村上處於後備佇列中的那些作業調入記憶體,排程物件是作業 就是一些程式,資料,還有一些作業說明書。作業需要執行哪些步驟執行完。每乙個步驟...