一個作業從提交開始直到完成,往往經歷以下三個調度: 一、作業調度 作業調度又稱高級調度,主要任務是按照一定的原則從外存上處於後備隊列的作業中挑選一個或者多個作業,為其分配記憶體、I/O設備等必要資源,並建立相應的進程,使它們獲得競爭處理機的權利。簡要地說就是記憶體與外存的調度,對於每個作業僅調入一次、調 ...
一個作業從提交開始直到完成,往往經歷以下三個調度:
一、作業調度
作業調度又稱高級調度,主要任務是按照一定的原則從外存上處於後備隊列的作業中挑選一個或者多個作業,為其分配記憶體、I/O設備等必要資源,並建立相應的進程,使它們獲得競爭處理機的權利。簡要地說就是記憶體與外存的調度,對於每個作業僅調入一次、調出一次。多道批處理系統中大多配有作業調度,而其他系統中通常不需要配置作業調度,作業調度的執行頻率較低且時間較長,通常為幾分鐘一次。
二、記憶體調度
記憶體調度又稱中級調度,引入中級調度的目的是為了提高記憶體利用率和系統吞吐量。記憶體調度將那些暫時不能運行的進程調至外存等待,把此時的進程狀態稱為掛起狀態。當處於掛起狀態的進程能夠運行且記憶體有空閑時,將其重新調入記憶體並修改狀態為就緒狀態,掛在就緒隊列上等待。
三、進程調度
進程調度又稱低級調度,主要任務是按照某種方法和策略從就緒隊列中選取一個進程,將處理機分配給它。進程調度是操作系統中最基本的一種調度,執行頻率很高且時間較短,一般幾十毫秒一次。
四、三級調度的聯繫
1、作業調度為進程活動做準備,進程調度使進程正常活動起來,記憶體調度將暫時不能運行的進程掛起,記憶體調度處於作業調度和進程調度之間;
2、作業調度次數最少,記憶體調度次數略多,進程調度頻率最高;
3、進程調度是最基本的,不可或缺。
對以下2個例子進行分析:
1、有一個具有兩道作業的批處理系統,作業調度採用短作業優先調度演算法,進程調度採用搶占式優先順序調度演算法。作業的運行情況見下表,其中作業的優先數為進程的優先數,優先數越小,優先順序越高。
作業名 |
到達時間 |
運行時間 |
優先數 |
1 |
8:00 |
40min |
5 |
2 |
8:20 |
30min |
3 |
3 |
8:30 |
50min |
4 |
4 |
8:50 |
20min |
6 |
8:00時,作業1到達,此時記憶體和處理機空閑,作業1進入記憶體並占用處理機;
8:20時,作業2到達,此時記憶體仍有1個位置空閑,處理機被占用,作業2進入記憶體,由於進程調度採用搶占式優先順序調度,故作業2相應進程搶占處理機;
8:30時,作業3到達,但此時記憶體已無空位,故等待;
8:50時,作業2執行完成並空出一道記憶體空間並讓出處理機,作業3和作業4競爭該道記憶體空間,由於作業4的運行時間短,故先調入記憶體,此時作業1相應進程優先順序比作業4相應進程優先順序高,故先執行作業1的相應進程;
9:10時,作業1執行完成並空出一道記憶體空間並讓出處理機,將作業3調入記憶體,由於作業3相應進程優先順序比作業4相應進程優先順序高,故先執行作業3的相應進程;
10:00時,作業3執行完成並讓出處理機,執行作業4相應進程,10:20時作業4執行完畢。
作業 |
到達時間 |
運行時間 |
優先數 |
進入記憶體時間 |
結束時間 |
周轉時間 |
1 |
8:00 |
8:00-8:20, 8:50-9:10 |
5 |
8:00 |
9:10 |
70min |
2 |
8:20 |
8:20-8:50 |
3 |
8:20 |
8:50 |
30min |
3 |
8:30 |
9:10-10:00 |
4 |
9:10 |
10:00 |
90min |
4 |
8:50 |
10:00-10:20 |
6 |
8:50 |
10:20 |
90min |
註意:周轉時間是指從作業提交到作業完成所經歷的時間,包括作業在外存後備隊列上等待,在記憶體就緒隊列中等待,在處理機上運行以及I/O操作等所花費的時間。
2、在一個有兩道作業的批處理系統中,有一作業序列,其到達時間及估計運行時間如下表,系統作業採用最高響應比優先調度演算法(響應比=(等待時間+估計運行時間)/估計運行時間)。進程的調度採用短進程優先調度的搶占式調度演算法。
作業 |
到達時間 |
估計運行時間/min |
J1 |
10:00 |
35 |
J2 |
10:10 |
30 |
J3 |
10:15 |
45 |
J4 |
10:20 |
20 |
J5 |
10:30 |
30 |
10:00時,作業J1到達,此時記憶體和處理機空閑,作業J1進入記憶體並占用處理機;
10:10時,作業J2到達,此時記憶體還有一個位置空閑,處理機被占用,故作業J2調入記憶體等待;
10:15、10:20、10:30時,作業J3、J4、J5分別到達,但三個作業到達時記憶體中已有J1、J2兩道作業,故這三個作業都不能調入記憶體;
10:35時,作業J1執行完成並空出一道記憶體空間並讓出處理機,此時作業J3、J4、J5響應比分別為65/45、35/20、35/30,則將作業J4調入記憶體,將處理機分配給運行時間較短的J4;
10:55時,作業J4執行完成並空出一道記憶體空間並讓出處理機,此時作業J3、J5的響應比分別為85/45、55/30,則將作業J3調入記憶體,將處理機分配給運行時間較短的J2;
11:25時,作業J2執行完成並空出一道記憶體空間並讓出處理機,將作業J5調入記憶體,將處理機分配給運行時間較短的J5;
11:55時,作業J5執行完成讓出處理機,將處理機分配給作業J3,12:40時作業J3執行完成。
作業 |
到達時間 |
運行時間 |
進入記憶體時間 |
結束時間 |
周轉時間 |
J1 |
10:00 |
10:00-10:35 |
10:00 |
10:35 |
35min |
J2 |
10:10 |
10:55-11:25 |
10:10 |
11:25 |
75min |
J3 |
10:15 |
11:55-12:40 |
10:55 |
12:40 |
145min |
J4 |
10:20 |
10:35-10:55 |
10:35 |
10:55 |
35min |
J5 |
10:30 |
11:25-11:55 |
11:25 |
11:55 |
85min |
個人總結:由以上兩個例子可以看出,作業調度與進程調度採用不同的調度演算法,具有相對的獨立性。作業調度執行的是從外存後備隊列調入至記憶體的這個過程,而進程調度執行的是從就緒隊列中選擇合適的進程進行處理機分配。作業調度在為進程調度做準備,所以之間又有相互聯繫。
資料來源:王道操作系統