題目:(北京大學1993考研)算法
一個批處理系統中,有兩個做業進程。有一個做業序列,到達時間和估計服務時間以下。系統採用最高響應比優先的做業調度算法,做業進程的調度採用短做業優先的搶佔式調度算法。請列出各做業的執行狀況表。spa
====================================================================blog
進程調度分爲隊列
長程調度,又稱做業調度,用於決定把外存上處於後備隊列中的哪些做業調入內存,併爲它們建立進程、分配必要的資源,而後,再將新建立的進程排在就緒隊列上,準備執行進程
短程調度,又稱進程調度,用來決定就緒隊列中的哪一個進程應得到處理機,而後再由分派程序把處理機分配給該進程的具體操做內存
中程調度,從就緒掛起到就緒,從阻塞掛起到阻塞,引入中程調度的主要目的,是爲了提升內存利用率和系統吞吐量(這裏不談)資源
進程調度圖:程序
一個做業到達時首先被放進後備隊列。並行
做業調度按必定的算法從後備隊列中選擇到達的資源能獲得知足的做業裝入內存,使做業有機會去佔用處理器執行。im
所謂的有機會,是由於此後還須要進程調度程序來進行調度,決定哪一個進程優先得到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