作業系統的訊號量 程序互斥 同步等概念
阿新 • • 發佈:2019-02-01
Var s:semaphore:=1;
/*設定訊號量 s 的初值為 1*/
begin
parbegin /*併發開始*/
process1:
begin
repeat
P(s) ;
critical section
V(s) ;
remainder section
until false;
end
process2:
begin
repeat
P(s) ;
critical section
V(s) ;
remainder section
until false;
end
parend
end
以 上 描 述 的 是 並 發 執 行 的 兩 個 進 程 process1 和process2,這兩個程序的臨界區
(1)要找對臨界區,範圍小了會出錯,範圍大了會影響程序執行。
(2) P、V 操作位於臨界區前後,在一個程序裡成對出現。
(3) 2 個程序對 1 個臨界資源互斥使用時訊號量初值為 1,取值範圍為-1,0, 1。
(4) 當 n 個程序要互斥使用 m 個同類臨界資源時(n>m),用訊號量實現互斥時,訊號量的初值應為m,即該類可用資源的數 目。訊號量的取值範圍為-(n-m)~m。
(5) 當訊號量
(6) 當訊號量 s>0時, s表示還允許進入臨界區的程序數,即剩下的臨界資源個數)。
(7) 執行一次 P(s)操作,表示請求一個臨界資源,s-1後,當s<0 時,表示可用資源沒有了,程序阻塞。
3利用訊號量實現程序同步