概念
死锁:多个进程由于临界资源的不合理分配导致无限阻塞的状态称为死锁。
死锁VS饥饿:
死锁的进程全部处于阻塞态,而饥饿的进程可能处于阻塞态也可能处于就绪态;
进入饥饿的进程可以只是一个,而死锁的进程数需大于等于2个
死锁产生的原因
系统资源的竞争;
进程推进顺序非法;
一句话即为系统临界资源的不合理分配。
必要条件
互斥条件
不剥夺条件
请求并保持条件
循环等待条件
死锁某种程度上可以理解为同类资源数只有1的循环等待。
死锁的处理策略
死锁预防
是指破坏四个必要条件之一。
使得临界资源能够共享访问; SPooling技术
可剥夺;可能会较低效率
若不能得到全部资源则放弃所有已得资源
对软硬件资源进行编号,按序号递增申请,而同类资源全部申请完
死锁避免
是指避免进程进入不安全状态;不安全状态不一定是死锁状态。而死锁状态一定是不安全状态。
银行家算法:
若不能满足进程对于各类资源的全部需求则不分配。
死锁检测和解除
资源分配图,框表示一类资源,框内数量表明资源数量,点表明进程,有向边包括分配边和申请边。
检测方法:划去可删去的边,若最终无环则非死锁。
解除
资源剥夺法
撤销进程法
进程回退法