操作系统基础:死锁

本文详细阐述了死锁的概念、产生条件、类型及其区别,介绍了预防死锁的各种策略,包括破坏互斥、不剥夺、请求保持和循环等待条件,以及银行家算法的应用。同时涉及死锁的检测和解除方法。深入讲解了操作系统在资源管理和死锁问题上的关键角色。

在这里插入图片描述

在这里插入图片描述

🌈个人主页:godspeed_lucip
🔥 系列专栏:OS从基础到进阶



🐦1 死锁的概念

🦢1.1 总览

image1

🦢1.2 什么是死锁

image2

🦢1.3 死锁、饥饿、死循环的区别

🐧1.3.1 概念

image3

🐧1.3.2 区别

image4

🦢1.4 死锁产生的必要条件

死锁的产生必须满足以下四个基本条件

🐧1.4.1 互斥条件

image5

🐧1.4.2 不剥夺条件

image6

🐧1.4.3 请求和保持

image7

🐧1.4.4 循环等待

image8

可以类比于哲学家问题的死锁情况,如图
image9
注意:
image10
假如在上图的哲学家问题中,有第六个哲学家手里有筷子,那么意味着同类资源数大于1,只要第六个哲学家提供筷子就可以解决死锁的局面。

🦢1.5 什么时候会发生死锁

image11

🦢1.6 死锁的处理策略

image12

🦢1.7 总结

image13

🐦2 死锁的处理策略——预防死锁

🦃2.1 总览

image1
死锁只有在上述四个条件全部满足时才会产生,因此只要破坏其中的任何一个就可以避免死锁。

🦃2.2 破坏互斥条件

🦆2.2.1 什么是互斥条件?

image2

🦆2.2.1 如何破坏?

当存在互斥条件时,比如说对打印机的使用是互斥的,则可能会出现阻塞的情况:
image3

为此可以采用SPOOLing技术,将互斥资源在逻辑上打造成为共享资源。对于上述情况,可以增加一个缓冲空间,它接收了来自进程对打印机的使用请求,并将请求存储起来,一个一个的实现,如图:
image4

image5

🦆2.2.3 缺点

image6

🦃2.3 破坏不剥夺条件

🦆2.3.1 什么是不剥夺条件

image7

🦆2.3.2 如何破坏不剥夺条件

image8

🦆2.3.3 缺点

image9

🦃2.4 破坏请求和保持条件

🦆2.4.1 解释

image10

🦆2.4.2 如何破坏

image11

🦆2.4.3 缺点

image12
例如,假如现在有A、B、C三类进程,A需要资源1,B需要资源2,C需要资源1、2。假如源源不断的有A、B类进程申请资源,则C类进程始终等不到资源1、2空闲的时候,就会造成饥饿。
image13

🦃2.5 破坏循环等待条件

🦆2.5.1 解释

image14

🦆2.5.2 如何破坏

image15

🦆2.5.3 缺点

image16

🦃2.6 总结

image17

🐦3 死锁的处理策略——避免死锁

🦅3.1 总览

image1

🦅3.2 安全序列

image2

🦅3.3 不安全状态

image3

🦅3.4 银行家算法

假设此时共有n个进程,m种资源

🦉3.4.1 定义以下变量

(1)可用资源向量available[m]:记录第m种资源当前可利用的数量
(2)最大需求向量max[i][j]:记录第i个进程对第j种资源的最大需求量
(3)分配矩阵allocation[i][j]:记录第i个进程拥有第j种资源的数量
(4)请求向量request[i][j]:记录第i个进程对第j种资源的申请量
(5)需求矩阵need[i][j]:记录第i个矩阵第第j种资源的需求量。等于分配矩阵与分配矩阵的差值

🦉3.4.2 银行家算法的步骤

image4
第④步的安全性检查的步骤为
image5

🐦4 死锁的检测和解除

🦩4.1 总览

image1

🦩4.2 死锁的检测

🦚4.2.1 检测死锁的前提条件

image2

🦚4.2.2 数据结构

定义以下符号
image3
具体如图所示
image4

🦚4.2.3 检测算法

(1)关于可完全简化
image5

(2)算法内容
image6

(3)具体实现解释
①无死锁
在示意图中,R1此时的资源数量为0,而R2此时的资源数量为1,而P1像R2申请的资源数为1,小于等于剩余的资源数,故抹去P1。
之后,R1剩余资源数为2,P2申请资源数为1,可以满足,因此不会发生死锁。
②有死锁
image7
这是一个典型的死锁图,P1申请R1,R1分配给了P2,P2申请R2,R2分配给了P3,P3申请R3,R3分配给了P1、P2。三者都在等待对方释放资源,导致了死锁情况。
事实上,本图找不到既不堵塞又不孤立的进程。检测算法不能继续。

(4)补充
image8

🦩4.3 死锁的解除

🦚4.3.1 解除死锁的办法

image9

🦚4.3.2 进程撤销根据

①进程优先级:优先级越高的自然越不应该被首先撤销

②还要多久才可以完成:显然,进程完成所需时间越短,它就越不应该被首先撤销,应该撤销那些还要很久才可以完成的进程

③已执行多长时间:撤销执行时间越长的进程,那么意味着之后还要花更长的时间去完成,系统付出的代价也越大。所以,执行时间越短的进程应该被首先撤销。

④进程已经使用了多少资源。一个进程所拥有资源的数量越多,撤销它而彻底解除死锁局面的可能性就越大,就更应该被首先撤销。

⑤进程是交互式的还是批处理式的。撤销交互式的进程对于用户的体验可能不是很好,因此应首先撤销批处理式的进程

🦩4.4 总结

image10

🕮 5 总结

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

在这里插入图片描述

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值