-
试用信号灯实现如图所示的进程同步关系
-
信号量的个数要等于=具有直接前驱的进程个数
-
P2,P3,P4,P5这些进程有前驱,所以设S2=S3=S4=S5=0
因为P1执行完,P2,P3,P4才能执行 因为P1没有直接前驱,所以直接释放P2.P3.P4的信号量S2,S3,S4 P1 { V(S2) V(S3) V(S4) } P2想要执行,得先让P1执行完,所以需要申请S1 P2执行完可以释放S2 P2 { P(S1) V(S2) #这里可写可不写 } P3想要执行,得先让P1执行完,所以需要申请S1 P3和P4有共同后继,P3或者P4任意进程释放S5 P3 { P(S1) } P4想要执行,得先让P1执行完,所以需要申请S1 P4 { P(S1) V(S5) } P5想要执行,得先申请S3,S4 P5可以释放S5 { P(S3) P(S4) V(S5) }
-
哲学家进餐问题,五个进程,五只筷子
semaphore S1=S2=S3=S4=S5=1
P1拿起S1、S2,释放S1,S2