2.4.4 訊號量的應用
1、利用訊號量實現程序互斥
為使多個程序互斥訪問某臨界資源,須為該資源設定一互斥訊號量mutex,並設其初始值為1,然後將各程序訪問資源的臨界區cs置於wait(mutex) 和 signal(mutex)之間即可。
semaphore mutex =1;
begin
parbegin
process 1
: begin
repeat
wait
(mutex)
; critical section //對資源的操作語句 例如:利用印表機列印
signal
(mutex)
; remainder section
until false;
endprocess 2
: begin
repeat
wait
(mutex)
; critical section
signal
(mutex)
; remainder section
until false;
endparend
wait 和 signal 操作 也就是 pv操作必須成對出現:所謂p操作就是申請乙個單位的資源,程序進入。簡言之就是訊號量減一;所謂v操作就是釋放乙個單位資源,程序出來。簡言之就是訊號量加一。我們知道訊號量的資料結構中,其值是指可用資源的數量。所以,成對出現就是要保證資源供給的平衡。
2、利用訊號量實現前驅關係
設有兩個併發執行的程序p1和p2,p1中有語句s1,p2中有語句s2,希望在s1執行之後再執行s2。
使程序p1和p2共享乙個公共訊號量s,並設其初始值為0.則
//程序p1
s1; //此時s大於等於零,程序繼續執行
signal
(s);
//此時s小於零,程序阻塞,釋放資源,進入阻塞佇列
//程序p2
wait
(s);
//此時s ++ ,大於零,申請資源使得程序2繼續執行s2
s2;
給出圖
用訊號量表示前驅關係
semaphore a, b, c, d, e, f, g =0,
0,0,
0,0,
0,0;
begin
parbegin
begin s1;
signal
(a);
signal
(b); end;
begin wait
(a); s2;
signal
(c);
signal
(d); end;
begin wait
(b); s3;
signal
(e); end;
begin wait
(c); s4;
signal
(f); end;
begin wait
(d); s5;
signal
(g); end;
begin wait
(e);
wait
(f);
wait
(g); s6; end;
parend
end
3、利用記錄型訊號量實現同步有下述情況,p1和p2兩個程序因為合作完成一項任務而公用乙個變數x。程序p2要將處理結果送入x;程序p1將x的結果列印。要如何用訊號量機制實現程序同步。
semaphore empty=1;
//變數x可賦值使用,即p1的print(x)已完成
semaphore full=0;
//變數x已賦值,即p1可 print(x)
begin
parbegin
p1: begin
repeat
… …wait
(full)
;print
(x);
signal
(empty)
; … …
until false;
endp2: begin
repeat
… …wait
(empty)
; x:
=處理結果;
signal
(full)
; … …
until false;
endparend
作業系統 預習筆記 Chap02 0205
2.4.2 程序互斥 程序互斥是指兩個或者兩個以上的程式不能同時進入關於同一組共享變數的臨界區域,否則可能會發生於時間有關的的錯誤。當乙個程序正在訪問臨界資源,另外乙個要訪問該資源的程序要等待。實現程序互斥應當遵循的四大基本原則 1 空閒讓進 當臨界資源處於空閒狀態,允許乙個請求進入臨界區的程序立即...
作業系統筆記
主要講解了作業系統為何產生以及發展。思考一下,剛開始把一堆cpu,記憶體,硬碟和滑鼠鍵盤給你,你要怎麼用起來,要想對他們進行各種協助就要乙個東西來管理。最初的硬體是通過人工來管理的,特別選擇女性來管理,因為各個插頭的拔插和連線需要很細心。但是慢慢的發現這樣很麻煩,就開始有離線輸入輸出技術 批處理技術...
作業系統筆記
頁面置換演算法 先進先出置換演算法 一旦某個位置被訪問了,跟他相鄰的頁面可能訪問的機率更大,最近最少使用置換演算法 不發生缺頁情況下,先進先出頁面的順序是不變的,最近最少演算法要改變順序 儲存管理,可變分割槽儲存管理 作業序列,96k,20k,200k 最先適應法 從上往下 第乙個碰到的能裝下的 最...