linux常用命令 今有三個并發(fā)進(jìn)程R,M,P,它們共享了一個可循環(huán)使用的緩沖區(qū)B,緩沖區(qū)B共有N個單元。千分求解答?
今有三個并發(fā)進(jìn)程R,M,P,它們共享了一個可循環(huán)使用的緩沖區(qū)B,緩沖區(qū)B共有N個單元。千分求解答? VarB:數(shù)組[0..N-1]of charvars,s1,s2,s3:信號量,j,k:整數(shù):=1s
今有三個并發(fā)進(jìn)程R,M,P,它們共享了一個可循環(huán)使用的緩沖區(qū)B,緩沖區(qū)B共有N個單元。千分求解答?
VarB:數(shù)組[0..N-1]of charvars,s1,s2,s3:信號量,j,k:整數(shù):=1s1:=Ns2:=0s3:=0i:=0j:=0k:=0obeginprocessRVarx:字符beginl1:讀入字符XP(S1)P(s)B[i]:=Xi:=(i 1)modnv(S2)V(s)gotol1end
當(dāng)有n個并發(fā)進(jìn)程共享某個臨界資源時,求互斥信號量的取值范圍?
信號用于:
控制對共享資源的訪問(互斥);指示事件的發(fā)生;同步兩個任務(wù)。
以下代碼中的信號量:shareduresourceusem用于控制對共享資源的訪問(互斥);信號量keyudownusem指示事件的發(fā)生。如果信號量的值大于0,則可以使用它。如果該信號量的值為0,則該信號量上的pend操作被放置在等待列表中。
初始化信號量時,必須提供信號量的初始值。有三種初始值:
0:當(dāng)信號量用于指示事件時,例如:
key_uu2;down_2;SEM=ossemcreate(0)1:當(dāng)信號量用于控制對共享資源的訪問時,例如:
shared_2;resource_2;SEM=ossemcreate(1)
n:當(dāng)信號量用于表示任務(wù)的n個相同資源時。在RTOS啟動之前,還應(yīng)該注意信號量的初始化