图图图图图

系统中多个进程因等待彼此占有资源产生死锁,根据简化规则判断并返回死锁进程ID列表。例如,进程1、2、3相互等待对方资源形成死锁,且影响到进程100;进程0因等待的资源未被占有而不死锁;在另一测试用例中,没有进程死锁;第三个例子中,进程6和7发生死锁。
摘要由CSDN通过智能技术生成

某系统的进程可能占有和等待一些资源,现给出在某一时刻dump的这些进程占有和等待的资源信息。

请按照如下简化规则分析哪些进程发生了死锁;
请升序返回所有死锁的进程ID列表,或空列表[]。

简化规则如下:

如果某个进程P的任意等待资源被占有,则该进程必须等待,等待期间该进程不会是犯法所占用的资源;
如果进程P所等待的资源全部都未被其他进程占有,则该进程必将释放所占有的资源。

基于上,如果某个进程因为所等待的资源一直被占有而无限等待下去,则认为该进程发生了死锁。

输入:
第一行为一个整数num,表示进程个数;
接下来的的num行,依次表示每个进程占有和等待的资源情况,格式为:进程ID (占有资源列表) (等待资源列表);
输入保证:每个资源最多只会被一个进程占有。

输出:
升序返回所有死锁的进程ID列表,或空列表[]。

测试用例
(1)

5
100 () (20)
1 (40 20) (10)
2 (10) (30 100)
3 (100 300) (40 0)
0 () (30)

[1 2 3 100]
解释:

进程1等待被进程2占有的资源10;
进程2等待被进程3占有的资源100;
进程3等待被进程1占有的资源40;
这三个进程都因为锁等待的资源一直被占有而无线等待下去,所以这三个进程都发生了死锁。

因为进程1死锁,资源20一直被占有,导致进程100也死锁;
进程0等待的资源30未被占有,因此进程0不死锁。

(2)

4
2 () (40 30)
1 (20) (30 40)
3 () ()
9 (40) (30)

[]

(3)

6
1 (10) (20 50)
2 (20) (30 60)
3 (30) (40)
5 (50) ()
6 (101) (202)
7 (202) (101)

[6 7]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值