11. (简答题, 15分) P1、P2、P3、P4、P5、P6为一组合作进程,其前趋图如下图所示,使用P、V操作完成6个进程同步。
时间: 2023-05-29 16:02:36 浏览: 186
进程同步练习.
由图可知,P1、P2、P3是并行的,P1和P2执行完后,P4才能执行。P2和P3执行完后,P5才能执行,P4和P5执行完后,P6才能执行。
在P1、P2、P3中,任意一个进程完成都可以使其他两个进程继续执行,即它们之间不存在前趋关系。因此它们可以并行执行,无需同步。
P4需要在P1和P2执行完后才能执行,因此可以使用信号量实现同步,代码如下:
P1:
do something;
V(sem1);
P2:
do something;
V(sem1);
P4:
P(sem1); //等待P1执行完
P(sem1); //等待P2执行完
do something;
同理,P5需要在P2和P3执行完后才能执行,代码如下:
P2:
do something;
V(sem2);
P3:
do something;
V(sem2);
P5:
P(sem2); //等待P2执行完
P(sem2); //等待P3执行完
do something;
最后,P6需要在P4和P5执行完后才能执行,代码如下:
P4:
P(sem3); //等待P1、P2执行完
P(sem3); //等待P5执行完
do something;
P5:
V(sem3); //通知P6可以执行
do something;
P6:
P(sem3); //等待P4执行完
do something;
其中,sem1、sem2、sem3均为初值为0的信号量。
阅读全文