资源分类
消耗属性
1.可重用性资源:
2.可消耗资源:(临时资源)
抢占性
1.可抢占资源:
2.不可抢占资源:
死锁(Deadlock)
定义
一组进程中的每一个进程都在等待仅由该组中的其他进程才能触发的事件。
起因
1.竞争不可抢占性资源
2.竞争可消耗资源
3.进程推进顺序不当
产生死锁的必要条件
1.互斥:
资源在同一段时间只能被一个进程占用
2.请求和保持
进程已经保持了至少一个资源,但又提出了新的资源请求,请求的资源被其他进程占用,该进程自己的资源也不释放。
3.不可抢占
进程获得的资源在未使用完时不可被抢占,仅可由自身结束时释放。
4.循环等待
形成一个“进程-资源”的循环链,相互等待对方资源。
预防死锁
破坏“请求和保持”
第一种协议
进程开始前一次性申请运行过程中所需的全部资源。
资源浪费严重,经常产生饥饿现象。
第二种协议
只获得初期所需的资源进程就可运行,运行过程中先释放使用完毕的资源再申请后续资源
破坏“不可抢占”
当一个进程已经保持了一些资源且新的资源请求得不到满足时,该进程释放自己所持的全部资源重新进行申请。
代价较大,降低了吞吐量,增大了系统开销
破坏“循环等待”
对系统所有资源类型进行线性排序,赋予不同序号。
每个进程必须按序号递增顺序请求资源。
若申请多个同类资源,则必须一起请求。
避免死锁
系统安全状态
系统的的进程可以按照某种序列的先后顺序推进,该序列即为
安全序列
若系统无法找到一个安全序列,则处于不安全状态。
不安全状态
不一定会死锁,但安全状态一定不会死锁
银行家算法避免死锁
详见下章
死锁的检测
资源分配图
P为进程、R为资源,方框中的圆圈数代表资源数,资源指向进程代表将该资源分配一个给进程,进程指向资源代表进程申请一个该资源。
死锁定理
死锁的充分条件为资源分配图不可简化——死锁定理
找到一个既不阻塞又不独立的进程,该进程运行结束后释放其全部资源,去掉所有线。
重复上述过程,直到无法实现(不能简化)或没有线(简化完成)。
死锁的解除
逐个终止进程,直到解除死锁。
死锁状态下选出只终止一个进程的情况下所付出代价最小的那个进程。
若还未解锁,则重复上述操作。
每次保证当次付出代价最小。
仅为个人学习概括整理.............