P(S)和V(S)操作原語描述如下:
voidp(S)
structsemaphoreS;
{
S.value=S.value-1;
if(S.value<0)block(S.P);
}
voidv(S)
S.value=S.value+1;
if(S.value<=0)wakeup(S.P);
(PV操作的含義:PV操作由P操作原語和V操作原語組成(原語是不可中斷的過程),對訊號量進行操作,具體定義如下:
P(S):①將訊號量S的值減1,即S=S1;
②如果S0,則該程序繼續執行;否則該程序置為等待狀態,排入等待佇列。
V(S):①將訊號量S的值加1,即S=S+1;
②如果S>0,則該程序繼續執行;否則釋放佇列中第一個等待訊號量的程序。
PV操作的意義:我們用訊號量及PV操作來實現程序的同步和互斥。PV操作屬於程序的低階通訊。)
P(S)和V(S)操作原語描述如下:
voidp(S)
structsemaphoreS;
{
S.value=S.value-1;
if(S.value<0)block(S.P);
}
voidv(S)
structsemaphoreS;
{
S.value=S.value+1;
if(S.value<=0)wakeup(S.P);
}
(PV操作的含義:PV操作由P操作原語和V操作原語組成(原語是不可中斷的過程),對訊號量進行操作,具體定義如下:
P(S):①將訊號量S的值減1,即S=S1;
②如果S0,則該程序繼續執行;否則該程序置為等待狀態,排入等待佇列。
V(S):①將訊號量S的值加1,即S=S+1;
②如果S>0,則該程序繼續執行;否則釋放佇列中第一個等待訊號量的程序。
PV操作的意義:我們用訊號量及PV操作來實現程序的同步和互斥。PV操作屬於程序的低階通訊。)