| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 操作系统-死锁的检测与解除 -> 正文阅读 |
|
[系统运维]操作系统-死锁的检测与解除 |
1.死锁的检测资源分配图图中元素和有向边的解释: R1,R2这类资源类型用长方形表示 每个类型的资源中的圆圈数量就是该资源总共持有的数量 P1,P2这类在外面的大圆圈表示进程 从资源出发指向进程的有向边:某类资源分配给某进程一个资源 从进程出发指向资源的有向边:该进程向某类资源申请一个资源 该图的解释: R1:本身有3个资源,其中有两个分配给了P1,一个分配给了P2;并且P2还在向其申请分配一个资源,但是此时的R1已经将其所有的三个资源都分配了出去,P2只有等待其他进程运行结束释放R1资源,才有可能得到该资源 R2:本身有两个资源,先分配给了P2一个资源;并且此时P1向其申请分配一个资源,当前R2有一个资源空闲,P1的请求可以得到满足 死锁定理:当且仅当资源分配图中的结点不能被全部简化(经过化简还是有有向边与进程结点相连),则该状态会发生死锁? 资源分配图的简化步骤1.先找出一个既不阻塞(它当前所申请的资源,在该状态下还有足够的空闲资源分配给它,也就是进程的所有申请资源请求可以得到满足)又不是孤点(没有有向边与之相连)的进程 2.把与它相关的有向边全部删除,它之前所占有的资源也全部返还 3.按前两步,一直执行下去,直到找不到既不阻塞又不是孤点的进程时,算化简结束 4.当最后资源分配图上全都是孤点时,就是可完全化简,表示该时刻不会发生死锁;反之,若化简结束后,还是有进程上有有向边,就是不可完全化简,表示该时刻会发生死锁 化简实例1.P1,P2都不是孤点,判断P1,P2是否阻塞, ? ? ? ? P1:申请一个R2资源,R2当前有一个空闲资源可以分配给P1,此时P1已经得到其所需要的所有资源,可以化简,也就是消除其所有有向边,归还两个R1,一个R2资源 ? ? ? ? P2:申请一个R1资源,但此时R1资源没有空闲,P2进程因此阻塞 2.P1化简完之后,P2的R1资源请求可以得到满足,此时的P2也可以化简,消去其所有相关的有向边,化简完后,图中已经没有满足不是孤点的进程了,所以该图可以完全化简,该状态不会引起死锁的发生 2.死锁的解除(对检测出死锁的进程进行的操作)资源剥夺法:将当前死锁的进程先挂起(调出外存),然后将其所占有的资源剥夺,分配给那些需要的进程,让其他进程运行下去。(记得注意调出外存的进程时间,否则它们长时间得不到资源会出现“资源匮乏”现象) 进程回退法:将进程回退到足以防止死锁发生的时刻,需要额外给每个进程保存其历史状态和设置还原点。(就如图上的P2进程,它所申请的R1资源在该时刻得不到满足,所以可以将P1进程回退到持有一个R1资源的时刻,这时P2进程的请求可以满足) 进程撤销法:将发生死锁的部分或者全部进程进行撤销,并且剥夺它们的资源,实现简单,但副作用很大,例如有些进程已经执行很长时间,快结束了,突然给它撤销,虽然解决了当前的死锁问题,但之后还是需要给它运行知道其运行完成,得不偿失。 ? 死锁的解除操作要对那些进程使用呢?是否有什么指标来参考或评定那些进程应该先进行解除?1.进程优先级:可以将低优先级的进程进行解除,优先完成高优先级的进程任务 2.进程运行时间:由于死锁解除操作执行后,被解除的进程还是需要执行完毕,所以可以优先考虑进程运行时间短的进程 3.进程还有多久能完成:优先考虑进程还需完成时间长的,这样进行解除操作,其后果是最小的 4.进程类型:显然交互式进程是与用户体验密切相关的,所以优先考虑那些脱机进程,也就是批处理进程 5.进程所持有的资源数:优先考虑解除持有资源数多的进程,这样解除该进程后,死锁的局面可以尽最大限度的解决 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 20:35:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |