程序互斥原則模板:(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 吞吐量 總時 間完成的 作業數量 周轉時間 完成作業需要花費的總時間 周 轉時 ...