下列描述的现象中,哪一个是由于进程 P1、P2 因申请不同类资源而产生死锁的现象
P1 拥有设备 A,请求设备 B;P2 拥有设备 B,请求设备 A
P1 申请一页内存,P2 申请一页内存;P1 释放一页内存,P2 释放一页内存
P1 和 P2 先进行同步信号量 P 操作,再进行互斥信号量 P 操作
P1 等待接收 P2 发来的信件 Q 后向 P2 发送信件 R;P2 等待接收 P1 发来的信件 R后向 P1 发送信件 Q
答案
P1 拥有设备 A,请求设备 B;P2 拥有设备 B,请求设备 A
解析
下列描述的现象中,由于进程P1、P2因申请不同类资源而产生死锁的现象是P1 拥有设备 A,请求设备 B;P2 拥有设备 B,请求设备 A。
这种情况下,P1和P2分别持有一个资源(设备A和设备B),并且都在等待对方持有的资源。这种资源的互锁请求形成了一个循环等待链,即P1等待P2释放设备B,而P2等待P1释放设备A。由于没有外部的干预,两个进程都将无限期地等待下去,从而导致死锁。
其他选项描述的现象不构成死锁:
• P1和P2申请和释放内存:只要内存充足,或者申请和释放的顺序得当,就不会产生死锁。
• P1和P2先进行同步信号量P操作,再进行互斥信号量P操作:这描述的是信号量操作,只要信号量的使用和管理得当,一般不会直接导致死锁。
• P1和P2等待接收对方的信件:虽然这描述了一个可能的循环等待的情况,但如果双方的通信协议设计得当,例如使用一个消息队列或中介者来协调,也可以避免死锁。
因此,只有第一个选项描述了典型的因资源互锁请求而产生的死锁情况。