本文共 705 字,大约阅读时间需要 2 分钟。
1、死锁定义:
两个或两个以上的进程在执行过程中因争夺资源而造成的一种相互等待的现象。在没有外力推动的情况下,系统无法运行下去。此称系统处于死锁状态。
2、死锁原因:
3、死锁产生的必要条件:
- 互斥:在一段时间内,某资源只能由一个进程占用
- 不剥夺:对于已获得的资源,除非进程用完后自己主动释放,否则不会主动释放。
- 请求并保持:进程已经占有至少一个资源,但是在之后又提出了新的资源请求且该资源无法获得,此时请求进程被阻塞。但是不会释放自己已经获得资源。
- 循环等待:发生死锁时,存在资源的循环等待链。
4、预防死锁:
破环产生死锁的四个必要条件之一即可。
- 破坏互斥条件:允许系统资源都可以共享使用
- 破坏不剥夺条件:对于已经占有一些资源的进程,如果再次请求的资源不能得到满足使之继续执行,就释放它之前占有的所有资源。
- 破坏请求并保持条件:预先静态分配资源,即进程在执行之前一次性分配完所有资源。
- 破坏循环等待条件:资源顺序分配。对系统中的资源进行编号,按编号递增的顺序分配资源。
5、避免死锁:
利用银行家算法,防止系统进入不安全状态。
银行家算法:
在每次资源分配时,先判断系统是否有足够的资源满足要求,如果有,就先预分配;并对分配后的新系统进行安全性检查,恶搞状态安全,则正式分配,否则拒绝分配。
6、检测死锁:
利用死锁定理,化简资源分配图。如果可以完全化简(能消去所有的边),就没有死锁。
7、解除死锁:
- 资源剥夺:将某些死锁进程挂起并抢占他们的资源分配给其他死锁进程。
- 进程回退:让一个或多个进程回退到足以避免死锁的一步。
- 进程撤销:强制撤销部分或全部死锁进程,剥夺他们的资源。
转载地址:http://xrjui.baihongyu.com/