You are on page 1of 3

第五章 行程排班演算法(多注意計算)

1. 先來先做排班法(FCFS) p.154
行程 分割時間 P1 的等待時間 = 0
P1 24 P2 的等待時間 = 24
P2 3 P3 的等待時間 = 27
P3 3 平均等待時間 = ( 0 + 24 + 27 )/3 = 17
2. 最短工作先做排班法(SJF) p.156
行程 分割時間 P1 的等待時間 = 3
P1 6 P2 的等待時間 = 16
P2 8 P3 的等待時間 = 9
P3 7 P4 的等待時間 = 0
P4 3 平均等待時間 = ( 3 + 16 + 9 + 0 )/4 = 7
3. 優先權排班演算法 p.158
行程 分割時間 優先順序 P1 的等待時間 = 6
P1 10 3 P2 的等待時間 = 0
P2 1 1 P3 的等待時間 = 16
P3 2 4 P4 的等待時間 = 18
P4 1 5 P5 的等待時間 = 1
P5 3 2 平均等待時間 = ( 6 + 0 + 16 + 18 + 1)/5 = 8.2
4. 依序循環排班演算法(此例時間量為 4 毫秒) p.160
行程 分割時間 P1 的等待時間 = 0 P1 再次等待時間 = 6
P1 24 P2 的等待時間 = 4
P2 3 P3 的等待時間 = 7
P3 3 平均等待時間 = ( 0 + 4 + 7+ 6 )/3 = 5.66
5. 不可搶先的 SJF p.158
行程 到達時間 分割時間 P1 的等待時間 = 0
P1 0 8 P2 的等待時間 = 8-1
P2 1 4 P3 的等待時間 = 17-2
P3 2 9 P4 的等待時間 = 12-3
P4 3 5 平均等待時間 = ( 0 + 7 + 15 + 9 )/4 = 7.75

第六章

◎臨界區間問題
臨界區間問題就是設計一套協定,使得各行程能夠互相合作。每一個行程需要求允許進入其臨
界區間執行。而能完成這種要求的程式碼部份叫作入口區間。又在臨界區間之必須緊跟著出口
區間。剩餘的程式碼則是剩餘區間。
解決臨界區間問題必須滿足下列三項要求:
1.互斥:如果行程 P1 正在臨界區間內執行,則其它的行不能在其臨界區間內執行。
2.進行:如果沒有行程在臨界區間內執行,同時某一行程想要進入其臨界區間,那麼只有那些
不在剩餘區間執行的行程才能加入決定誰將在下一次進入臨界區間,並且這個選擇不得
無限期地延遲下去。
3.限制性的等候:在一個行程已經要求進入其臨界區間,而此要求尚未被答應之前,
允許其它的行程進入其臨界區間的次數有一個限制。

◎程式碼解釋 (自已看,乃不懂)p.198~200
S1; 1.這四行做解識
Signal (synch); 2.為什麼一定要從 S1 執行,不從 S2 開始執行
Wait (synch);
S2;

第七章

◎死結的充要條件
1.互斥:至少有一資源必須是不可共用的型式,換言之,一次只有一個行程可使用此資源。若
有另一行程想使用這資源,則必須延遲至此資源被釋放後才可以。
2.佔用與等候:必須存在一個至少已佔用一個資源且正等候其它行程已佔用另外資源之行程。
3.不可搶先:資源無優先權;因此,一個資源只能被佔用它的行程在完成工作目標之後,才
被釋放。
4.循環式等候:必須存在一等候行程的集合{P0,P1,…,Pn},其中 P0 等候的資源已被 P1 等候
的資源已被 P1 佔用,P1 所等候的資源已被 P2 佔用,…,Pn-1 所等候的資源已被 Pn 佔用,
而 Pn 所等候的資源已被 P0 佔用。

◎處理死結的方法
․可以使用某一協議,以防止或避免死結,並保證系統絕不會進入死結狀態。
․可以允許系統進入死結狀態,偵測出來再想辦法恢復之。
․可以忽視此問題,假裝系統從沒發生過死結。

◎佔用與等候的主要缺點
這兩種協定有兩個主要的缺點。第一,由於大部份的時間內許多資源可能只被分配而未使用,
故資源的使用率非常低。第二,可能產生飢餓現象。

◎二種常見方法用來處理作業系統中的臨界區間
(1)可搶先核心
(2)不可搶先核心
當它正在可搶先核心模式中執行的時候,一個可搶先核心讓行程可搶先,不可搶先核心不
允許在核心模式執行搶先。

◎ 避免死結
避免死結的另一種方法是要求有關於資源需求的額外資訊。避免死結演算法又可動態地
檢查資源配置的狀態,以確保系統不會產生循環等候的狀況

◎ 銀行家演算法(參考課堂上所說的例子)
◎ 資源配置的等候圖(p.258)

P5

P1 P2 P3

P4

You might also like