作業系統程序互斥演算法

2021-10-19 11:00:33 字數 2791 閱讀 7502

程序互斥原則模板:

(1)互斥性

列舉所有情況,乙個程序進入臨界區後,另乙個程序不能進入臨界區

(2)進展性

列舉乙個程序要求進入臨界區後,能夠進入臨界區和多個程序要求進入臨界區後,能有乙個進入臨界區

(3)有限等待性

乙個程序離開臨界區後,不會讓該程序再度進入臨界區,而是讓其他程序也能夠進入臨界區

int flag[2]

;int turn;

p0:do

臨界區turn =1;

flag[0]

=0; 其餘**

}while(1

);p1:do

} 臨界區

turn =0;

flag[1]

=0;}

while(1

);

(1)考慮互斥性:

假設p0進入臨界區,flag[0] = 1,p1欲進入臨界區必定處於外層while迴圈忙式等待,滿足互斥性

(2)考慮進展性:

若只有乙個程序想進入臨界區,假定為p0,則flag[1] = 0,p0結束外層while迴圈進入臨界區。

若兩個程序都想進入臨界區,那麼turn必定滿足其中乙個if條件,假設滿足turn == 0,那麼將flag[1]置為0,p1進入內層while迴圈忙式等待,而p0獲得處理器資源後,由於flag[1] = 0,故退出外層while迴圈,進入臨界區,滿足進展性。

(3)考慮有限等待性:

假設p0處於臨界區中,p1執行entry section**試圖進入臨界區,p0離開臨界區時,turn = 1,flag[0] = 0。

若在p1判斷外層while迴圈之前,p0沒有再次提出進入臨界區,那麼p1在外層while迴圈判斷flag[0]條件不成立,進入臨界區。

若在p1判斷外層while迴圈之前,p0再次提出進入臨界區,但此時turn = 1,p0會將flag[0]置為0進入忙式等待,直至p1進入並離開臨界區。因而在p0再度進入臨界區之前,必能獲得進入臨界區的機會,滿足有限等待性。

int flag[2]

;int turn;

p0:do

while(1

);p1:do

while(1

);

(1)考慮互斥性:

假設p0進入臨界區,此時分為三種情況

(a)flag[1]不滿足 (b)turn == 1不滿足 (c)二者均不滿足

對於a,則說明此時p1還未請求進入臨界區,若在之後p1請求進入臨界區時,將turn賦值為0的操作後執行

對於b,則說明將turn賦值為0操作後執行

對於c,要求flag[1] = 0 且 turn = 0不可能實現,因為這要求p1未進入entry section而又將turn賦值為0。

可能的ab兩種情況時,p0處於臨界區,故flag[0] = 1,又turn = 0,因此p1將在while迴圈處執行忙式等待,滿足互斥性。

(2)考慮進展性

若只有乙個程序想進入臨界區,假定為p0,flag[1] = 0,跳出while迴圈進入臨界區

若兩個程序都想進入臨界區,只能滿足turn = 0或turn =1兩種情況,因此必定有乙個結束while迴圈進入臨界區,滿足進展性。

(3)考慮有限等待性

若p0離開臨界區,則flag[0] = 0

若在p1判斷外層while迴圈之前,p0沒有再次提出進入臨界區,那麼p1在外層while迴圈判斷flag[0]條件不成立,進入臨界區。

若在p1判斷外層while迴圈之前,p0再次提出進入臨界區,那麼此時必定執行turn = 1, p0進入忙式等待,p1必定能進入臨界區,滿足有限等待性。

int choosing[n]

;//choosing[i] = 1表示程序i正在抓號,否則為0

int number[i]

;//number[i]為0表示程序i沒有抓號,否則為正整數,初始為0(1

)(a,b)

<

(c,d) 如果 a < c or

(a = c and b < d)成立(2

) max的值為乙個正整數k,對於所有i(0

<= i <= n-1)

, k >= ai do+

1;choosing[i]=0

;for

(j =

0; j < n; j++

) 臨界區

number[i]=0

; 其餘**

}while(1

);

(1)考慮互斥性:

對於程序pi,滿足條件所抓號碼為number[i],且對於其它想進入臨界區的程序pj有(number[i],i) < (number[j],j)。當pi進入臨界區後,其它程序將在第乙個或第二個while處忙式等待,滿足互斥性。

(2)考慮進展性:

當有多個程序競爭進入臨界區時,有兩種情況

(a)乙個程序抓到最小號碼 (b)若干個程序抓到最小號碼

對於a,抓到最小號碼的程序進入臨界區

對於b,抓到最小號碼且編號最小的程序進入臨界區 因此滿足進展性

(3)考慮有限等待性

因為競爭程序按照先進先出的次序進入臨界區,而且程序數量有限,因此程序不會無限期地等待進入臨界區,滿足有限等待性。

作業系統互斥程序問題

假設有n個程序,共享乙個空間 1 當共享區只允許乙個程序占用時候,則訊號量 mutex 的取值範圍 2共享區允許m個程序占用,訊號量取值範圍 1,互斥訊號量初值為 1 變化範圍為 n l 1 當沒有程序進入互斥段時,訊號量值為 1 當有 1 個程序進入互斥段但沒有程序等待進入互斥段時,訊號量值為 0...

作業系統 程序互斥 硬體方案

原則 程序進入臨界區時關中斷,退出臨界區時開中斷。為什麼要採用關中斷?關中斷是指在此中斷處理完成前,不處理其它中斷,這樣就可以保證程序不被中斷,從而保證了互斥性 不允許兩個以上的共享該資源的併發程序同時進入臨界區稱為互斥 因此採用關中斷。缺點?將禁止一切中斷的權利賦予普通使用者,若使用者沒有開放中斷...

作業系統 程序排程演算法

cpu利用率 cpu忙碌的時間佔總時間的比例 利 用率 忙碌的 時間總時 間利用率 frac 利用率 總時 間忙碌的 時間 系統吞吐量 單位時間完成作業或程序的數量 吞 吐量 完成的 作業數量 總時 間吞吐量 frac 吞吐量 總時 間完成的 作業數量 周轉時間 完成作業需要花費的總時間 周 轉時 ...