操作系统概论并发原理临界资源刷题

在刷操作系统概论的题,碰见一个大题,答案完全看不懂,求大神指点....

题:有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操作。 求大神指点,,,完全看的我一头雾水。
阅读 2.5k
1 个回答

先了解几个概念:

  1. P(A)申请资源A,V(A)是释放资源A
  2. 题目中的“临界资源A和B” “互斥访问” 表示 A和B 每次次只能供一个进程使用的资源,即进程P1用了,P2就不能用
  3. 定义2个信号量mutexA和mutexB分别对应于资源A和B(题目写了),只是变量名,这个题重要的是P V 申请的资源是什么,还有顺序,code..不用知道(这种题有点像伪代码,看懂大概意思就行)

回到题目:
假设执行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就能顺利执行)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题