在刷操作系统概论的题,碰见一个大题,答案完全看不懂,求大神指点....
题:有2个并发进程P1和P2,它们都要使用临界资源A和B。为了实现对上述资源的互斥
访问,可定义2个信号量mutexA和mutexB分别对应于资源A和B。P1和P2进程的程序如下:
请回答以下问题:
(1)上述2个并发进程P1和P2会不会产生死锁问题?
(2)如果会产生死锁问题,如何修改进程的程序,使得不会产生死锁?如果不会产生死
锁,请说明理由。
答案:(1)有可能会发生死锁。
(2)交换p2进程中两个P操作的顺序,或者,交换p1进程中两个P操作的顺序。
理由是两个进程对应的两个P操作申请资源的顺序要一致。
**请问答案是怎么推导出来的啊?**,还有图中的mutexA: =1 和mutexB: =1是什么意思?课本上根本没讲啊。。还有cobegin 和图中的P操作跟V操作。 求大神指点,,,完全看的我一头雾水。
先了解几个概念:
回到题目:
假设执行P1,P1 申请到了A(执行到P(A),但还未执行到P(B),此时A被占用,B空闲),
同时也执行P2,P2 申请了B(执行到P(B),此时A被P1占用,B被P2占用,)
结果:P1想继续执行但申请不到B,也释放不了A,而P2想继续执行但申请不到A,也释放不了B,两个进程互等,就死锁了。
如果P2换一下申请资源顺序,先P(A),在P(B),那么你懂得...
(当P1在执行,占用A时,P2会继续等A被P1释放,不会占用B,P1也能顺利申请B,执行结束,释放AB,然后P2就能顺利执行)