死锁是多个线程在运行过程中互相竞争资源发生的僵局,若无外力作用,它们都无法推进下去。
死锁的四个必要条件
解决死锁的基本方法
预防死锁:
1)资源一次性分配:一次性分配所有资源,这样就不会有请求了(破坏请求条件)
2)只要有一个资源得不到分配,就不给这也进程分配其他的资源(破坏保持条件)
3)可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不剥夺条件)
4)资源有序分配法:系统给每个资源赋予一个编号,每一个进程按照编程递增的顺序请求资源,释放则相反(破坏环路等待条件)
解除死锁:
常用的有:
1)剥夺资源:从其他进程剥夺足够数量的资源给死锁进程,以解除死锁状态;
2)撤销进程:可以直接撤销死锁进程或撤销代价最小的进程,直至有足够的资源可用;
原文:https://www.cnblogs.com/lhh666/p/11545460.html