關於程序排程有乙個核心問題就是:是否搶占。因此,排程演算法也被劃分為兩類:搶占式排程和非搶占式排程。非搶占式排程就是說,一旦這個程序獲得了處理器資源,除非執行完成或者阻塞或者出現不能執行的情況,將一直執行下去,直到執行完成。搶占式排程的意思是排程程式可能會暫時中斷某個程序轉向另外乙個程序。
最樸素的排程演算法,按照程序實際到達的時間,也就是說考慮的是程序的等待時間。通常以乙個佇列模型
短作業優先演算法考慮到的是通常情況下,短作業(程序)佔比較大。如果長作業先執行,會導致後面的短作業的總體等待時間過長,也就是平均周轉時間都會更長,假如有不同的人等待不同的作業,那樣短作業使用者都會去等待這個長作業先執行完才能輪到自己的短作業。按照短作業優先演算法,作業(程序)時間越短,程序優先順序越高,也就越先執行。這種方式能夠有效降低平均周轉時間和平均帶權周轉時間,但是容易導致程序飢餓現象(乙個長作業在等待過程中不斷有短作業加入),同時很多時候對作業(程序)的執行時間長度也無法準確估計。
對於每個作業(程序)賦予優先順序,優先順序高的先執行。優先順序排程有搶占式也有非搶占式的,對於非搶占來說,程序需要一直執行完再根據優先順序選擇下乙個程序進行排程;而搶占式的排程,一旦出現優先順序更高的,則立即切換至優先順序更高的程序。同時,優先順序也分靜態優先順序和動態優先順序。高響應比就使用了動態優先順序來調整。除了根據響應比確定動態優先順序,有些時候可能也會使用io來確定動態優先順序。
輪轉排程演算法將cpu時間劃成乙個乙個的時間片(quantum),程序按照先來後到的順序排成就緒佇列,每次時間片從佇列中取乙個程序,執行乙個時間片的長度。如果時間片內程序結束了,就通知排程器選擇下乙個程序,否則,將該程序排到隊尾,從隊首選擇下乙個程序。輪轉排程演算法最大的問題在於,程序上下文切換(context switch)需要較大的開銷,對於時間片過短,那麼切換開銷就會很大;但是時間片過長,又很難應付分時系統要求的互動性,並且有些時候可能時間片還未執行完就會被阻塞。
多級佇列為了解決輪轉排程中的時間片既不能太長也不能太短的問題。它根據優先順序設定不同的佇列,每一級佇列的執行時間片不盡相同,通常是,越低優先順序的佇列執行時間片越長。當乙個程序到達時,先進入最高優先順序的佇列,執行不完,塞入次級佇列,以此類推。同級的佇列按照fcfs排程,而不同級佇列按照佇列的優先權進行排程,也就是說,當低優先順序佇列的程序未執行完,但是有新的程序進入(必然放在最高優先順序佇列中),這樣就將該程序放在這個低階優先順序的佇列末尾,轉而執行新的程序。這種排程方式結合了fcfs,rr,和優先順序排程,保證了分時系統的高響應、短程序的快速周轉,長作業也不會餓死。
分時系統中不同使用者執行的程序數量不一樣,僅僅對程序平等是不夠的,這樣會導致使用者得到的cpu資源不公平。對於這個問題需要保證使用者獲得的cpu時間相同,或者遵循一定比例,就要區分開不同使用者的程序,進行排程。
作業系統原理之處理器排程實驗
實驗目的與要求 在採用多道程式設計的系統中,往往有若干個程序同時處於就緒狀態。當就緒狀態程序個數大於處理器數時,就必須依照某種策略來決定哪些程序優先占用處理器。本實驗模擬在單處理器情況下處理器排程,幫助學生加深了解處理器排程的工作。二 實驗要求 1 實驗題目。2 程式中使用的資料結構及符號說明。3 ...
作業系統學習筆記 處理器狀態
處理器根據程式計數器的指向從記憶體 中取指令到指令暫存器,然後解碼並執行,程式計數器將自動增長或變為轉移位址以便於指明嚇一跳待執行指令的位址。為了實現指令功能,處理器中設定了一組暫存器用作定址和存放資料,變數和中間結果。作業系統程式能夠執行全部機器指令,應用程式只能執行非特權指令。處理器中有硬體標誌...
作業系統原理 處理器排程
1 處理機按照層次被劃分為為 排程 排程按照頻率從高到低依次被命名為低階排程,中級排程和高階排程 低階排程 又稱為程序排程,此種排程頻率最高.也是最基本的排程。就是cpu不再執行當前程序,而是執行乙個就緒態的程序 中級排程 又稱為交換排程,這種排程就是將記憶體中暫時不用的程序移至外存.把外存等待的程...