題目:(北京大學1993考研)
一個批處理系統中,有兩個作業進程。有一個作業序列,到達時間和估計服務時間如下。系統采用最高響應比優先的作業調度算法,作業進程的調度采用短作業優先的搶占式調度算法。請列出各作業的執行情況表。
====================================================================
進程調度分為
長程調度,又稱作業調度,用於決定把外存上處於后備隊列中的哪些作業調入內存,並為它們創建進程、分配必要的資源,然后,再將新創建的進程排在就緒隊列上,准備執行
短程調度,又稱進程調度,用來決定就緒隊列中的哪個進程應獲得處理機,然后再由分派程序把處理機分配給該進程的具體操作
中程調度,從就緒掛起到就緒,從阻塞掛起到阻塞,引入中程調度的主要目的,是為了提高內存利用率和系統吞吐量(這里不談)
進程調度圖:
一個作業到達時首先被放進后備隊列。
作業調度按一定的算法從后備隊列中選擇到達的資源能得到滿足的作業裝入內存,使作業有機會去占用處理器執行。
所謂的有機會,是因為此后還需要進程調度程序來進行調度,決定哪個進程優先獲得CPU,什么時候獲得CPU,分配多少CPU時間片,能不能搶占等等,也就是說,調度程序才是大腦,CPU只是一個執行部件而已。
於是,作業調度選中了一個作業且把它裝入內存時,就會為該作業創建一個進程,若有多個作業被裝入內存,則內存中同時存在多個進程,這些進程的初始狀態為就緒狀態,放在就緒隊列中,然后,由進程調度程序根據自己的調度算法來選擇當前可占用處理器的進程,進程運行中會出現各種狀態,有以下些狀態會引起調度程序的重新調度決策:
1.在創建一個新進程時之后,需要決定運行父進程還是子進程
2.在一個進程運行結束讓出CPU使用權的時候,需要重新調度一個進程給CPU
3.當一個進程阻塞在I/O信號或者信號量或其他上面時,必須選擇另外一個進程運行。
4.在一個I/O中斷發生時,某些被阻塞的等待該I/O的程序可能已經進入就緒態,需要重新決策。
調度算法分為搶占式和非搶占式算法兩類,這里區分一下:
非搶占式:意味着調度程序調度某進程運行,分配時間片,直到時間片完或者該進程自己由於某些原因阻塞才回打斷其執行,否則調度程序不能因為優先級等原因強行調度另一個進程來搶占原有進程的CPU資源。
搶占式:意味着調度程序雖然調度了某個進程運行,但是此后調度程序隨時可以根據其算法讓另一個符合優先執行的進程強制剝奪其CPU資源。
如此,作業調度與進程調度相互配合實現多道作業的並行執行。
那么為什么要制定作業調度算法呢?為什么要搞一個后備隊列呢?一個作業到來后直接把它扔到就緒隊列中不就好了?實際上我們不這樣做的原因是就緒隊列的空間可能是有限的。比如題目說的有兩個作業進程,說明就緒隊列的容量是2,一個作業運行,一個作業就緒。由於不是每個作業都能迅速達到就緒態,所以就需要作業調度來選擇進入系統(就緒態)的作業。
解如下:
10:00 作業A到達,由於就緒隊列空,作業調度進系統,進程調度執行
10:10 作業B到達,就緒隊列未滿,作業調度進系統,由於B此時是最短作業,所以進程調度A到就緒態,調度B執行
作業A已運行10分鍾,剩余25分鍾
10:15 作業C到達,響應比為1,等待作業調度進系統
作業B繼續執行,已運行5分鍾,剩余25分鍾
作業A剩余25分鍾,位於就緒隊列
10:20 作業D到達,響應比為1,等待作業調度進系統
作業C等待5分鍾,響應比R=1+5/45 = 1.11
作業B繼續執行,已運行10分鍾,剩余20分鍾
作業A剩余25分鍾,位於就緒隊列
10:30 作業E到達,響應比為1,等待作業調度進系統
作業D等待10分鍾,響應比R=1+10/20 = 1.5
作業C等待15分鍾,響應比R=1+15/45 = 1.3
作業B繼續執行,已運行20分鍾,剩余10分鍾
作業A剩余25分鍾,位於就緒隊列
10:40 作業E等待10分鍾,響應比R=1+10/30 = 1.3
作業D等待20分鍾,響應比R=1+20/20 = 2.0
作業C等待25分鍾,響應比R=1+25/45 = 1.6
作業D具有最高響應比,D被作業調度進系統,由於是最短作業,進程調度D執行
作業B運行結束
作業A剩余25分鍾,位於就緒隊列
11:00 作業E等待30分鍾,響應比R=1+30/30 = 2.0
作業C等待45分鍾,響應比R=1+45/45 = 2.0
兩者響應比相同,由於C先到達,所以作業調度C進系統
作業D運行20分鍾,運行結束
作業A剩余25分鍾,服務時間比C小,進程調度A執行
11:25 作業E等待55分鍾,響應比R=1+55/30 = 2.8,作業調度進系統
作業C剩余45分鍾,位於就緒隊列
作業A運行25分鍾,運行結束
因為C服務時間比E長,所以進程調度E執行
11:55 作業C剩余45分鍾,位於就緒隊列
作業E運行30分鍾,運行結束
12:40 作業C運行結束
各作業運行時間段為:
A 10:00-10:10 11:00-11:25
B 10:10-10:40
C 11:55-12:40
D 10:40-11:00
E 11:25-11:55