计算机四级网络工程师-操作系统原理-第8章死锁
文章目录
单选题
情况表死锁检测
饥饿、死锁、活锁
死锁 | 相关进程进入阻塞状态,且无法唤醒 |
---|---|
活锁 | 相关进程没有阻塞,可被调度,但是没有进展 |
饥饿 | 相关进程没有阻塞,但是调度被无限推后 |
死锁的四个必要条件
4个必要条件 | 对应现象 |
---|---|
互斥 | 没有采用SPOOLing 技术的系统中,进程P1和P2可时申请使用可一台打印机 |
不可剥夺 | 进程P1额外甲请内存不成功,则持有原有的内存进人阻塞状态 |
循环等待 | 进程P1等待P2完成视频解压缩的信号,P2正等待P1发来的解压数据 |
请求和保持 | 进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放 |
死锁的几种解决方法
避免死锁 | 银行家算法 |
---|---|
破坏请求和保持条件(预防死锁) | 一次性分配所需要的资源;交通红绿灯(交叉路口图) |
破坏互斥条件 | SPOOLing ;建设立交桥(交叉路口图) |
破坏不可剥夺条件 | 进程处于非运行状态时状态时允许其他进程使用该进程已经占用的资源;路口设置黄色网格缓冲区(交叉路口图) |
破坏循环等待条件 | 采用资源的按序分配;实行单向行驶(交叉路口图) |
死锁避免、死锁预防、死锁检测、死锁解除
死锁避免 | 银行家算法 |
---|---|
死锁预防 | 资源有序分配法;一次性分配所有资源 |
死锁检测 | 系统允许部分进程发生死锁,通过定时运行资源分析程序并报告是否己有死锁 |
死锁接触 | 系统允许发生部分死锁,一旦发现有死锁进程,则杀死死锁进程 |
哲学家进餐场景和进程资源分配图(打印机+磁带机),需要一定的阅读能力,就记住上述预防和避免的内容就行
银行家算法(问安全序列)
题一:已给系统剩余资源
总体步骤(草稿图不用划线,拉开间隔上下对齐直接写):
- 左侧-右侧=还需分配的资源量
- 将每个选项依次计算,得出结果
步骤一:左侧-右侧,就按下方列草稿
剩余资源R | 2 | 3 | 3 |
---|---|---|---|
P1还需资源 | 0 | 0 | 6 |
P2 | 1 | 3 | 4 |
P3 | 2 | 1 | 1 |
P4 | 3 | 4 | 7 |
P5 | 1 | 1 | 1 |
步骤2:计算每个选项,按下方列草稿,只写出R+P进程已分配资源量
(#如果P进程还需资源≤剩余资源R,则进入P进程,每个P进程结束后,会把已分配资源量回收回来,新R=旧R+P已分配资源量)
A选项:
P3 4 4 7 #到这一步就没必要继续验证了,由步骤一可知:
第一列最大为4,第二列最大为4,第三列最大为7,只要是P3进程第一个执行,后续不管什么顺序都可以满足P≤R的进入条件
B选项:
P1 X X X(6>3)
解析:不满足P≤R的进入条件,每一个P进程还需资源量必须≤剩余资源R,P1三个数都必须≤R,P1第三位数字(6)大于R第三位数字(3)
C选项:
P4 X X X(7>3)
解析:不满足P≤R的进入条件,P4第三位数字(7)大于R第三位数字(3)
D选项:
P2 X X X(4>3)
解析:不满足P≤R的进入条件,P2第三位数字(4)大于R第三位数字(3)
题二:没给系统剩余资源
区别只在没给剩余资源R,也很好计算,看下图,求出后计算每个选项
资源分配状况图表判断是否死锁(资源方框和进程圆)
无死锁情况
方框——>圆表示资源分配,优先级最高
圆圈——>方框表示申请资源,优先级其次
**第一步:**按E顺序P1两个箭头一进一出,不冲突,可以正常运行P1,于是去掉圆P1周围的两个箭头
**第二步:**按E顺序P2两个箭头一进一出,不冲突,可以正常运行P2,于是去掉圆P2周围的两个箭头
**第三步:**直接看圆P3是没有冲突的方向箭头,所以本系统现象无死锁
死锁情况
可以看到,圆P2进程有两个指向内箭头,表示冲突,所以会产生死锁
可以看到,圆P2进程有两个指向内箭头==,表示冲突,所以会产生死锁
可以看到,圆P2进程有两个指向内箭头==,表示冲突,所以会产生死锁
带情况序号图表,问死锁序号选项
M:系统中进程个数
N:资源总量
只要每个情况序号(一行中),M≥2且N≥2就会发生死锁
不会死锁情况则反之
需要直接记忆单选
安全状态一定不会死锁
解除死锁方法:
- 剥夺死锁进程的资源
- 撤销死锁进程
- 重启系统
TIPS:本章节主要是看图题,进行计算,有很多没提到的单选直接刷题记忆