計算機作業系統第四版湯小丹 第三章作業
第三章習題
一、問答題
1. 高階排程與低階排程的主要任務是什麼? 為什麼要引入中級排程?
(1)高階排程又稱為作業排程。它是批處理系統中使用的一種排程。其主要任務是按照某種演算法從外存的後備佇列上選擇一個或多個作業調入記憶體,併為其建立程序、分配必要的資源,然後再將所建立的程序控制塊插入就緒佇列中。
(2)低階排程又稱程序排程。它是距離硬體最近的一級排程。其主要任務是按照某種演算法從就緒佇列上選擇一個(或多個)程序,使其獲得CPU。
(3)引入中級排程的目的是為了提高記憶體利用率和系統吞吐量。其功能是,讓那些暫時不能執行的程序不再佔用寶貴的記憶體資源,而是調其到外存上等候。此時的程序狀態為掛起狀態。當這些程序重新具備執行條件且記憶體空閒時,由中級排程選擇一部分掛起狀態的程序調入記憶體並將其狀態變為就緒狀態。
2. 在作業排程中應如何確定接納多少個作業和接納哪些作業?
作業排程每次要接納多少個作業進入記憶體,取決於多道程式度,即允許多少個作業同時在記憶體中執行。多道程式度的確定應根據系統的規模和執行速度等情況做適當的折中。而應接納哪些作業從外存入記憶體,這取決於所採用的作業排程演算法。不同的演算法滿足使用者對OS不同的需求。
3. 試比較FCFS和SJF兩種程序排程演算法。
相同點:兩種排程演算法都可用於作業排程與程序排程。
不同點:FCFS排程演算法每次都從後備佇列中選擇一個或多個最先進入該佇列的作業,將它們調入記憶體、分配資源、建立程序、插入到就緒佇列。該演算法有利於長作業程序,不利於短作業程序。
SJF演算法每次排程都從後備佇列中選擇一個或若干個執行時間最短的作業,調入記憶體中執行。該演算法有利於短作業程序,不利於長作業程序。
4. 在時間片輪轉法中,應如何確定時間片的大小?
時間片應略大於一次典型的互動需要時間。一般考慮三個因素:系統對相應時間的要求、就緒佇列中程序的數目和系統處理能力。
5. 何謂死鎖? 產生死鎖的原因和必要條件是什麼?
死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。
產生死鎖的原因是競爭資源和程序間推進順序非法。
其必要條件是:互斥條件、請求和保持條件、不剝奪條件、環路等待條件。
6. 解決死鎖的方法有哪些?
解決死鎖的四種方法即預防、避免、檢測和解除死鎖中,預防死鎖最容易實現;避免死鎖使資源的利用率最高。
7. 實時系統中採用的排程演算法可以有如下幾種:
1)非搶佔優先權排程演算法。
2)立即搶佔的優先權排程演算法。
3)時間片輪轉排程演算法。
4)基於時鐘中斷搶佔的優先權排程演算法、
按實時要求的嚴格程度由低到高的順序是什麼,請寫出分析過程。
順序是:3-1-4-2
3. 時間片輪轉法一般用於程序排程,每次排程,把CPU分配隊首程序,並令其執 行一個時間片。當執行的時間片用完時,由一個記時器發出一個時鐘中斷請求,該程序被停止,並被送往就緒佇列末尾,依次迴圈。
1. 系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序便一直執行下去,直至完成。
4. 實時任務到達後,如果該任務的優先級別高於當前任務的優先順序並不立即搶佔當前任務的處理機,而是等到時鐘中斷到來時,排程程式才剝奪當前任務的執行,將處理機分配給新到的高優先權任務。
2. 在這種排程策略中,要求作業系統具有快速響應外部時間中斷的能力.一旦出現外部中斷,只要當前任務未處於臨界區便立即剝奪當前任務的執行,把處理機分配給請求中斷的緊迫任務,實時程序排程,實時程序搶佔當前。
二、綜合題
1. 設有4個作業J1,J2,J3,J4.它們的到達時間和要求服務時間如下表所示。若這4個作業在—臺處理機上按單道方式執行,採用響應比高者優先排程演算法。
1)試寫出各作業的執行順序;
2)求各作業的週轉時間及平均週轉時間。
3)求各作業的帶權週轉時間及平均帶權週轉時間。
作業 |
到達時間 |
服務時間 |
J1 |
8:00 |
2小時 |
J2 |
8:30 |
40分鐘 |
J3 |
9:00 |
25分鐘 |
J4 |
9:30 |
30分鐘 |
1).在8點J1先到,先執行J1,J1在10點完成.
J2等待90分鐘,J2的響應比為:(90+40)/40=3.25
J3等待60分鐘,J3的響應比為:(60+25)/25=3.4
J4等待30分鐘,J4的響應比為:(30+25)/25=2.2
故J3先執行,J3在10:25完成,
J2等待115分鐘,J2的響應比為:(115+40)/40=3.875
J4等待55分鐘,J4的響應比為:(55+30)/30=2.83
故執行J2,J2在11:05完成,最後執行J4,J4在11:35完成
所以執行順序是J1-J3-J2-J4
2).J1的週轉時間是:120分鐘
J2的週轉時間是:155分鐘
J3的週轉時間是:85分鐘
J4的週轉時間是:125分鐘
J1,J2,J3,J4的平均週轉時間是:121.25分鐘
3).J1帶權週轉時間是:120/120=1
J2帶權週轉時間是:155/40=3.875
J3帶權週轉時間是:85/25=3.4
J4帶權週轉時間是:125/30=4.17
J1,J2,J3,J4的平均帶權週轉時間是:3.11125
2.有一個具有兩道作業的批處理系統,作業排程採用短作業優先排程演算法,程序排程採用以優先數為基礎的搶佔式排程演算法,作業優先數也是程序優先數,優先數越小則優先順序越高。詳細情況見下表所示:
作業名稱 |
到達時間 |
估計執行時間/min |
優先數 |
A |
10:00 |
40 |
5 |
B |
10:20 |
30 |
3 |
C |
10:30 |
50 |
4 |
D |
10:50 |
20 |
6 |
問:1、列出所有作業進入記憶體的時刻及結束時刻。
2、計算作業的平均週轉時間。
1)所有作業進入記憶體的時間及結束的時間見下表。
作業 |
到達時間 |
執行時間(min) |
優先數 |
進入記憶體時間 |
結束時間 |
週轉時間 (min) |
A |
10:00 |
40 |
5 |
10:00 |
11:10 |
70 |
B |
10:20 |
30 |
3 |
10:20 |
10:50 |
30 |
C |
10:30 |
50 |
4 |
11:10 |
12:00 |
90 |
D |
10:50 |
20 |
6 |
12:00 |
12:20 |
90 |
2)平均週轉時間為:(70+30+90+90)/4=70(min)。
3. 在銀行家演算法中,若出現下述資源分配情況,試問:
(1) 該狀態是否安全?
進行安全性檢查:
程序/資源情況 |
Work |
Need |
Allocation |
Work+Allocation |
Finish |
A B C D |
A B C D |
A B C D |
A B C D |
||
P0 |
1,6,2,2 |
0,0,1,2 |
0,0,3,2 |
1,6,5,4 |
True |
P3 |
1,6,5,4 |
0,6,5,2 |
0,3,3,2 |
1,9,8,6 |
True |
P4 |
1,9,8,6 |
0,6,5,6 |
0,0,1,4 |
1,9,9,10 |
True |
P1 |
1,9,9,10 |
1,7,5,0 |
1,0,0,0 |
2,9,9,10 |
True |
P2 |
2,9,9,10 |
2,3,5,6 |
1,3,5,4 |
3,12,14,14 |
True |
該狀態安全。
(2)若程序P2提出請求Request(1, 2, 2, 2)後,系統能否將資源分配給它?
先進行如下檢查:
A:Request2(1,2,2,2)<=Need2(2,3,5,6)
B:Request2(1,2,2,2)<=Available(1,6,2,2)
C:系統假定可以為P2分配資源,修改有關資料,如下:
Process |
Allocation |
Need |
Available |
A B C D |
A B C D |
A B C D |
|
P0 |
0,0,3,2 |
0,0,1,2 |
0,4,0,0 |
P1 |
1,0,0,0 |
1,7,5,0 |
|
P2 |
2,5,7,6 |
1,1,3,4 |
|
P3 |
0,3,3,2 |
0,6,5,2 |
|
P4 |
0,0,1,4 |
0,6,5,6 |
進行安全性檢查:
可以直接看出資源Available(0,4,0,0)已經不滿足任何一個程序需要,所以程序進入不安全狀態,因此,系統不能將資源分配給P2