操作系統用於管理系統的硬體、軟體和數據資源,控製程序的運行,是應用軟體與硬體之間的介面,也是人機之間的介面。操作系統的職能包括進程管理、存儲管理、文件管理、設備管理、作業管理等。 在進程管理中,PV操作在處理進程的同步與互斥問題方面非常重要,當多個進程需要同時訪問共用資源時會用到。PV是用荷蘭語表示 ...
操作系統用於管理系統的硬體、軟體和數據資源,控製程序的運行,是應用軟體與硬體之間的介面,也是人機之間的介面。操作系統的職能包括進程管理、存儲管理、文件管理、設備管理、作業管理等。
在進程管理中,PV操作在處理進程的同步與互斥問題方面非常重要,當多個進程需要同時訪問共用資源時會用到。PV是用荷蘭語表示的簡寫,P表示通過,V表示釋放,據說這是電腦領域為數不多的非英語簡寫。
PV操作由P操作原語和V操作原語組成,原語也叫原子操作,表示不可中斷的過程,這兩個原語要操作信號量S。
P操作將S的值減1,如果S<0,則將該進程置為等待狀態並加入進程隊列中,否則繼續執行。
V操作將S的值加1,如果S<=0則喚醒等待隊列中的第一個進程,否則繼續執行。
接下來使用單緩存區生產者、消費者問題來描述PV操作的運用,由於只有一個單緩存區,生產速度過快會使緩存區溢出,而消費速度過快會從緩存區拿到空值,如圖所示,在加入PV操作後就能解決這些問題
有生產者、消費者兩個進程,使用兩個PV操作,S1的初值為1,S2的初值為0。生產者第一次執行,S1=0,送產品到緩存區,S2=1;第二次執行時S1=-1,生產者進程轉為等待狀態並加入進程隊列。對於消費者進程,第一次執行過程中S2=0,從緩存區取產品,S1=0,消費產品,由於S1=0,生產者進程便被喚醒了,此時正好緩存區的產品被消費完。同理,如果消費者進程先執行,也照樣能保證兩個進程的配合無間。
PV操作便是通過這樣的過程來協調幾個需要同步的進程的。