死锁的常见问题

来源:互联网 发布:知之深爱之切全文pdf 编辑:程序博客网 时间:2024/06/05 20:51

1.死锁的概念:

多个线程在执行态中因争夺资源造成的一种僵局,若无外力将一直保持这种状态,这些永远互相等待的进程称为死锁进程

2.造成死锁的四个必要条件

1)互斥条件:进程对所分配到的资源进行排他性使用,即在一个时间段内某资源只能被一个进程占用,若有其他进程访问,则要等待,直到该资源被占用的进程释放掉。

2)请求和保持:进程已经占用至少一个资源,又要请求新的资源,新的资源被其他进程占用,此时请求阻塞,但又对自己已占有的资源保持不放。

3)不剥夺条件:指进程占有的资源在未使用完之前不能被剥夺,只能在使用完后自己释放掉。

4)环路等待条件:p0在等待p1的资源,p1在等待P2的资源,p2在等待p0的资源。

3.处理死锁的四个方式

死锁的预防、死锁的避免、死锁的检测、死锁的解除

1)死锁的预防:破坏生成死锁的四个条件中的一个。比如进程在申请资源时一次性申请所需要的全部资源,这就破坏了保持和等待条件。将资源分层,得到上一层资源后,才能申请下一层资源,破坏了环路等待条件。

2)死锁避免:每次申请资源时判断这些操作是否安全。比如银行家算法。会增大系统的开销。

3)死锁的检测:判断系统是否处于死锁状态。

4)死锁的解除:与死锁检测一起使用,方式是剥夺资源,将进程所拥有的资源强行收回分配给其他进程。


要避免死锁,要事先知道系统所拥有的资源数量和属性。

0 0
原创粉丝点击