题目

进程P1和P2,资源A和B,进程对资源的操作定义如下:读取资源A:rA;读取资源B:rB;写入资源A:wA;写入资源B:wB。同时规定,进程读取某一资源前,必须加上共享锁,写入某一资源前必须加上排他锁;资源在被进程加共享锁时,可以被其他进程继续加共享锁,但不能加排他锁;资源在被进程加排他锁时,其他进程无法加锁。进程完成全部操作后释放锁。进程P1和进程P2并发执行,如下哪种运行序列可能会出现死锁

第一个选项:P1(rA->rB), P2(rA->wB)

解析:p1、p2可以同时申请A资源(共享锁),都申请A资源后,p2申请独占B资源(因为排它锁)

    当线程p2使用完B资源,并将其释放,然后线程p1就可以继续使用,则无死锁

  第二个选项:P1(rA->rB), P2(wA->rB)

解析:先看p2,当p2独占A资源,p1是无法申请到A资源,p2继续申请B资源,使用完并将其释放

    然后线程p1又可以继续工作,则无死锁。

  第三个选项:P1(wB->rA), P2(rA->rB)

解析:先看p1,当p1独占B资源,又会申请A资源,与此同时,p2也申请到A资源,但当它要去申请B资源的时候

    发现B资源被p1独占,所以只有等p1使用完释放之后,p2才可以工作,所以不会死锁。

  第四个选项:P1(wB->rA), P2(wA->rB)

解析:p1线程独占B资源,想要去申请A资源,然而p2独占A资源,又想去申请B资源,这样彼此等待彼此,造成死锁。

  第五个选项:P1(wA->wB), P2(wA->wB)

解析:假设p1先独占A资源,p2也想独占A资源,但是A资源被p1独占,所以需要等p1使用完释放

    p2才能得到A资源,所以p1独占A资源之后又独占B资源,使用完释放,p2也可以继续工作,则无死锁。

  第六个选项:P1(wA->rB), P2(wA->wB)

解析:同理

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值