IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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.进程所持有的资源数:优先考虑解除持有资源数多的进程,这样解除该进程后,死锁的局面可以尽最大限度的解决

?

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 17:05:14  更:2021-08-23 17:06:23 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计