在有的操作系統中僅采用一級凋度,而有的操作系統則將凋度分為不同的層次,一個用戶作業從進入系統成為后備作業開始,直到運行結退出系統為止,一般最多經歷三級調度,即處理器調度可以分為以下3個層次。
1.高級調度(High Level Scheduling)
高級調度,稱作業調度或長程調度(Long-term Scheduling)。在批處理操作系統(只有在批處理操作系統中才有高級調度)中,作業首先進入系統在輔存上的后備作業隊列等候調度。它將按照系統預定的調度策略, 決定把后備隊列作業中的哪些作業調入主存,為它們創建進程、分配資源,并將它們排在進程就緒隊列外,使得這些作業的進程獲得競爭處理機的權利,準備執行。 當作業運行結束后,作業調度程序還將為作業做善后工作。而在純粹的分時或實時操作系統中,作業是聯機的。為了縮短響應時間,作業不是建立在外存,而是直接建立在內存中。用戶以通過鍵盤直接將命令或數據送入內存,所以在分時和實時系統中,不需要配備作業調度。
2.低級調度(Low Level Scheduling)
低級凋度,又稱進程調度或短程調度(Short-term Scheduling)。在進程狀態的變化中,從就緒到運行的轉變是由低級調度完成的。由于在多道程序環境下,進程(線程)的數目往往多于處理機數目,致使它們爭用處理機。低級調度將按照某種原則決定就緒隊列中的哪個進程或內核級線程能獲得處理器。低級調度是最基本的調度,任何類型的操作系統都必須配置低級調度。
3.中級調度(Medium Level Scheduling)
中級調度,又稱平衡負載調度、中程調度(Medium-term Scheduling)。很多操作系統為了提高內存利用率和作業吞吐量,專門引進了中級調度。中級調度決定主存儲器中所能容納的進程數,即決定哪些進程被允許參與競爭處理器資源,將一些皙時不能運行的進程調至外存上去等待,而不再占用寶貴的內存資源,騰出內存空間以便將外存上已具備執行條件的進程換如內存執行。此時這些被換出內存的進程處于掛起狀態。當進程具備了運行條件,且主存又有空閑區域時,再由中級調度決定把一部分這樣的進程重新調回主存工作。這樣,中級調度根據存儲資源量和進程的當前狀態來決定輔存和主存中的進程的對換,進程在運行期間,可能要經歷多次換進換出,起到短期調整系統負荷的作用。中級調度實際上就是存儲器管理中的對換功能。
綜上所述,在3個層次的處理器調度中,所有操作系統必須配備低級調度。高級調度發生在新進程的創建 中,它決定一個進程能否被創建,或者是創建后能否被置為就緒狀態,以參與競爭處理器資源獲得運行;中級調度反映到進程狀態上就是掛起和解除掛起,它根據系 統的當前負荷情況決定停留在主存中的進程數;低級調度則是決定哪一個就緒進程占用CPU運行。
在上述3種調度中,進程調度的運行頻率最高,在分時系統中通常是10?100ms便進行一次進程調度,因而進程調度算法不能太復雜,以免占用太 多的CPU時間。作業調度往往是發生在一個(批)作業運行完畢,退出系統,需要重新調入一個(批)作業進入內存時,故作業調度的周期較長,大約幾分鐘一 次。因而也允許作業調度算法花費較多的時間。中級調度的運行頻率基本上介于上述兩種調度之間。