操作系统基础:死锁

简介: 操作系统基础:死锁



🐦1 死锁的概念

🦢1.1 总览

🦢1.2 什么是死锁

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

🐧1.3.1 概念

🐧1.3.2 区别

🦢1.4 死锁产生的必要条件

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

🐧1.4.1 互斥条件

🐧1.4.2 不剥夺条件

🐧1.4.3 请求和保持

🐧1.4.4 循环等待

可以类比于哲学家问题的死锁情况,如图

注意:

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

🦢1.5 什么时候会发生死锁

🦢1.6 死锁的处理策略

🦢1.7 总结

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

🦃2.1 总览

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

🦃2.2 破坏互斥条件

🦆2.2.1 什么是互斥条件?

🦆2.2.1 如何破坏?

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

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

🦆2.2.3 缺点

🦃2.3 破坏不剥夺条件

🦆2.3.1 什么是不剥夺条件

🦆2.3.2 如何破坏不剥夺条件

🦆2.3.3 缺点

🦃2.4 破坏请求和保持条件

🦆2.4.1 解释

🦆2.4.2 如何破坏

🦆2.4.3 缺点

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

🦃2.5 破坏循环等待条件

🦆2.5.1 解释

🦆2.5.2 如何破坏

🦆2.5.3 缺点

🦃2.6 总结

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

🦅3.1 总览

🦅3.2 安全序列

🦅3.3 不安全状态

🦅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 银行家算法的步骤

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

🐦4 死锁的检测和解除

🦩4.1 总览

🦩4.2 死锁的检测

🦚4.2.1 检测死锁的前提条件

🦚4.2.2 数据结构

定义以下符号

具体如图所示

🦚4.2.3 检测算法

(1)关于可完全简化

(2)算法内容

(3)具体实现解释

①无死锁

在示意图中,R1此时的资源数量为0,而R2此时的资源数量为1,而P1像R2申请的资源数为1,小于等于剩余的资源数,故抹去P1。

之后,R1剩余资源数为2,P2申请资源数为1,可以满足,因此不会发生死锁。

②有死锁

这是一个典型的死锁图,P1申请R1,R1分配给了P2,P2申请R2,R2分配给了P3,P3申请R3,R3分配给了P1、P2。三者都在等待对方释放资源,导致了死锁情况。

事实上,本图找不到既不堵塞又不孤立的进程。检测算法不能继续。

(4)补充

🦩4.3 死锁的解除

🦚4.3.1 解除死锁的办法

🦚4.3.2 进程撤销根据

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

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

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

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

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

🦩4.4 总结

🕮 5 总结

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

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

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

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

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

相关文章
|
7月前
|
算法 安全
【操作系统】死锁处理-银行家算法
【操作系统】死锁处理-银行家算法
269 0
操作系统(3.5)--死锁概述
系统中所拥有的不可抢占性资源其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。
107 0
操作系统:死锁资源的计算
操作系统:死锁资源的计算
1487 0
|
4月前
|
算法 安全
操作系统中的死锁
【8月更文挑战第23天】
55 0
|
4月前
|
程序员 数据库
深入剖析操作系统死锁:不可不知的四大条件!
大家好,我是小米。今天探讨操作系统中的死锁问题——两个或更多进程因争夺资源陷入相互等待的状态。死锁有四个必要条件:互斥、请求与保持、非剥夺及循环等待。解决策略包括:使用乐观锁破坏互斥条件;资源一次性分配避免请求与保持;允许资源剥夺;以及采用资源有序分配法消除循环等待。通过这些方法,可以有效预防和解决死锁,提升系统稳定性和效率。希望本文能帮助你更好地理解并处理死锁问题!
150 4
|
4月前
|
算法 安全 调度
操作系统中的死锁、饥饿和优先级反转
【8月更文挑战第23天】
169 0
|
4月前
|
安全 算法 C++
操作系统---死锁相关
操作系统---死锁相关
41 0
|
7月前
|
安全 算法 程序员
操作系统(9)----死锁
操作系统(9)----死锁
58 1
|
7月前
|
算法 安全 调度
[操作系统] 面试宝典之~死锁连环系列
[操作系统] 面试宝典之~死锁连环系列
|
7月前
能列举一个操作系统发生死锁的例子吗
能列举一个操作系统发生死锁的例子吗