我在OS课程中进行了最后的测试,明天早上,我遇到了问题。
假设我们的系统中有4个进程:P1,P2,P3,P4和4个不同的资源:R1,R2,R3,R4。 该图所示系统的当前状态。
问题是 - “系统是否陷入僵局?”我解决了几个类似的问题,所以,我认为,系统IS处于死锁状态,因为没有足够的可用资源(例如P4请求2个R3实例,但在可用列表中只存在3个R3资源)。
我很困惑,因为我的从业者的回答是:系统没有处于死锁状态,并且进程按此顺序运行:P4-> P3-> P1-> P2
哪种解决方案是对的?
感谢。
答案 0 :(得分:1)
你的导师是对的。特别地,P4已经具有(1 0 1 1),因此仅需要(0 0 1 0),这可以通过可用资源容易地满足。在为资源提供P4之后,它完成并释放它正在使用的所有内容(包括其当前分配)。然后,OS可以将这些资源发送到剩余的进程(按正确的顺序),从而没有死锁。
答案 1 :(得分:0)
根据这里的解释,P4-> P3-> P2-> P1不起作用,因为P2将使R1为0,并且可能导致P2的死锁进入循环或长时间不可用当R1为零时,时间P1等待所有时间。 ?
在P3和P4完成后,Avail Matrix变为3334,这足以满足P2的需求吗?
答案 2 :(得分:0)
安全序列是p3,p4,p1,p2
p1假
p2假
p3 true total 5555 - 执行1st
p4 true total 6566 - 执行第二次
循环续
p1 true total 7678 - 执行第3个
p2真总计9788 - 执行第4个
安全序列(p3,p4,p1,p2)