操作系统-死锁
2022/2/2 23:17:44
本文主要是介绍操作系统-死锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
必要条件
互斥条件:每个资源要么已经分配给了一个进程,要么就是可用的。
占有和等待条件:已经得到了某个资源的进程可以再请求新的资源
不可抢占条件:已经分配给一个进程的资源部能强制性地被抢占,它只能被占有它的进程显式地释放
环路等待条件:有两个或者两个以上的进程组成一条环路,该环路的每个进程都在等待下一个进程所占有的资源。
处理方法
鸵鸟策略
死锁检测与死锁恢复
死锁预防
死锁避免
鸵鸟策略
直接不解决,我看不见,等于没有发生。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。
死锁检测与死锁恢复
不试图阻止死锁,而是当检测到死锁发生时,采取措施进行恢复。
1、每种类型一个资源的死锁检测。
2、每种类型多个资源的死锁检测。
3、死锁恢复:利用抢占、回滚恢复或者通过杀死进程恢复
死锁预防
破坏4个条件中的其中一个
死锁避免
在程序运行时避免发生死锁
安全状态
定义:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。
安全状态的检测与死锁的检测类似,因为安全状态必须要求不能发生死锁。
单个资源的银行家算法
一位银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。
多个资源的银行家算法
检查一个状态是否安全的算法如下:
1、查找右边的矩阵是否存在一行小于等于向量A。如果不存在这样的行,那么系统将会发生死锁,状态是不安全的。
2、假若找到这样一行,将该进程标记为终止,并将其已分配资源加到A中。
3、重复以上两步,直到所有进程都标记为终止,则状态时安全的。
如果一个状态不是安全的,需要拒绝进入这个状态。
这篇关于操作系统-死锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法