死锁¶
产生死锁的必要条件(2,3,4任意不成立)¶
- 互斥条件:进程访问的是临界资源,那个资源一次只能被一个进程所使用。
- 不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。
- 部分分配:(请求和保持条件)一个进程在请求新的资源的同时,保持对某些资源的占有。
- 环路等待条件:存在一个进程的环路链,链中每一个进程占用有着某个或某些资源,又在等待链中的另一个进程占有的资源。
预防死锁¶
- 资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)
- 只要有一个资源得不到分配,也不给这个进程分配其他的资源:(破坏请保持条件)
- 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)
- 资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)
解除死锁¶
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;
撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止
代价是指优先级、运行代价、进程的重要性和价值等。