死锁
必要条件
- 互斥:资源只能分配给一个进程;
- 占有并等待:已经持有了某个资源的进程又去请求新资源;
- 不可抢占:只能由持有进程主动释放;
- 环路等待:有两个或两个以上进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源;
死锁解除
处理死锁应从破坏死锁出现的四个条件出发
- 破坏互斥条件:例如打印机处理多线程抢占的情况时,真正请求物理打印机的进程只有打印机守护进程;
- 破坏占有和等待条件:资源预分配策略(所有进程在开始执行前请求所需要的全部资源);
- 破坏不可抢占条件;
- 破坏环路等待:资源有序分配策略;
死锁避免
存在某种调度次序使得每个进程运行完毕
银行家算法