1.安全序列
我们首先引入安全序列的定义:所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次地运行完毕,这种进程序列{P1,P2,...,Pn}就是安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。
安全序列{P1,P2,...,Pn}是这样组成的:若对于每一个进程Pi,它需要的附加资源可以被系统中当前可用资源加上所有进程Pj当前占有资源之和所满足,则{P1,P2,...,Pn}为一个安全序列,这时系统处于安全状态,不会进入死锁状态。
虽然存在安全序列时一定不会有死锁发生,但是系统进入不安全状态(四个死锁的必要条件同时发生)也未必会产生死锁。当然,产生死锁后,系统一定处于不安全状态。
(图片来源)
-- | 资源分配策略 | 各种可能模式 | 主要优点 | 主要缺点 |
---|---|---|---|---|
死锁预防 | 保守,宁可资源闲置 | 一次请求所有资源,资 源剥夺,资源按序分配 | 适用于做突发式处理 的进程,不必进行剥夺 | 效率低,进程初始化时 间延长;剥夺次数过多; 不便灵活申请新资源 |
死锁避免 | 是”预防“和”检测“ 的折中(在运行时判断是 否可能死锁) | 寻找可能的安全允许 顺序 | 不必进行剥夺 | 必须知道将来的资源 需求;进程不能被长时间 阻塞 |
死锁检测 | 宽松,只要允许就分配 资源 | 定期检查死锁是否已 经发生 | 不延长进程初始化时 间,允许对死锁进行现场 处理 | 通过剥夺解除死锁,造 成损失 |