操作系统知识盘点(三)(死锁相关)

【操作系统】考研复试高频知识点总结 本文主要讲解:计算机考研复试中【操作系统】在面试中的高频题汇总。 阅读详情

15、死锁的概念

在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统的处理能力。然而,多个进程的并发执行也带来了新的问题--死锁

当多个进程因竞争系统资源或相互通信而处于永久阻塞状态时,若无外力作用,这些进程都无法向前推进。这些进程中的每一个进程均无限期地等待此组进程中某个其他进程占有的、自己永远无法得到的资源,这种现象称为死锁

比如某系统只有一台打印机和一个输入设备,进程A正在占用输入设备,同时提出了打印机的请求,但此时打印机被B占用,在B未释放打印机之前,又提出请求使用正被A占用的输入设备,这样,两个进程无休止的等待下去,均无法继续执行,此时两个进程陷入死锁状态

有以下结论:

  • 参与死锁的进程至少有两个
  • 每个参与思索地进程均等待资源
  • 参与死锁的进程中至少有两个进程占有资源
  • 死锁进程是系统中当前进程集合的一个子集

 

16、死锁产生的原因和必要条件

(1)资源分类

操作系统是一个资源管理程序,它负责分配不同类型的资源给进程使用。现代操作系统所管理的资源类型十分丰富,并且可以从不同的角度出发对其进行分类。例如,可以把资源分为可剥夺资源和不可剥夺资源

可剥夺资源是指虽然资源占有者进程仍然需要使用该资源,但另一个进程可以强行把该资源从占用者进程处剥夺来归自己使用

不可剥夺资源是指除占有者进程不在需要使用该资源而主动释放资源外,其他进程不得在占有者进程使用资源过程中强行剥夺

一个资源是否属于可剥夺资源,完全取决于资源本身的性质。比如打印机在一个打印任务未结束之前,是无法被其他打印任务剥夺的,属于不可剥夺资源;而主存和CPU却是可剥夺资源

在研究资源分配时,必须弄清资源的类型,资源的不同使用性质是引起系统死锁的原因。如何对可剥夺资源的竞争不会引起进程死锁,而对其他类型资源的竞争则有可能导致死锁

(2)死锁产生的原因

死锁产生的原因是竞争资源。如果系统中只有一个进程在运行,所有资源位一个进程独享,则不会出现死锁现象。当系统中有多个进程并发执行时,若系统中的资源不足以同时满足所有进程的需要则会引起进程对资源的竞争,从而可能导致死锁的产生

死锁产生的原因时资源不足和进程推进顺序不当

系统资源不足是根本原因,设计操作系统的目的就是使并发进程共享系统资源,而进程推进顺序不当是产生死锁的重要原因,当系统资源刚好够进程使用时,进程的推进顺序不当就很容易导致进程彼此占有对方需要的资源,从而导致死锁

(3)死锁产生的条件

  • 互斥条件。进程要求对所分配的资源进行排他性控制,即在一段时间内某种资源仅为一个进程所占有
  • 不剥夺条件 进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,及只能由获得该资源的进程自己来释放
  • 请求与保持条件 进程每次申请他所需的一部分资源,在等待分配新资源的同时,进程继续占用已分配到的资源。请求与保持条件也称为部分分配条件
  • 环路等待条件  存在一种进程资源的循环等待链,而链中的每一个进程已经获得资源同时被链中的下一个资源所请求

要发生死锁,这四个条件缺一不可,因此可以通过破坏其中的一个或几个条件来避免死锁的发生

 

17、处理死锁的基本方法

  • 鸵鸟算法:指像鸵鸟一样对死锁视而不见,及不理睬死锁
  • 预防死锁:通过设置某些限制条件,去破坏产生死锁的4个必要条件中的一个或几个来预防发生死锁
  • 避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁
  • 检测及解除死锁:通过系统的检测机构及时的检测出思索地发生,然偶采取某种措施解除死锁

这里要区分后三种措施的不同之处。预防死锁是在调度方式上破坏死锁产生的必要条件,使系统无法产生死锁,例如采用可剥夺式的进程调度方法,优先级高的进程总能得到资源并完成运行,因此系统不会产生死锁:避免死锁实在动态分配过程中,预知系统是否会进入不安全的状态,如果资源分配有可能产生死锁,则不进行这种分配,而检测与解除死锁是一种比较被动地方法,实在检测到死锁已经发生之后进行处理,例如采用剥夺死锁进程的资源等方法强制进程释放资源或结束死锁进程来解除死锁状态。

这三种方法有不同的特点,例如在不能破坏死锁的必要条件的情况下,就无法采用预防死锁的方法,只能够采用其他方法;在系统进程过多预测系统是否进入不安全状态的成本过高时,采用避免死锁的方式并不划算,不如等死锁发生后采用检测及解除死锁的方法

现实的操作系统并非都采用以上三种方法,相反,很多操作系统认为死锁不可能发生,对死锁不进行任何处理(这种说法不够积极,应该说对死锁采用鸵鸟算法),如UNIX

 

18、死锁的预防

根据以上讨论,想要防止死锁的发生,只需要破坏死锁产生的四个必要条件之一即可

(1)互斥条件:为了破坏互斥条件就要允许多个进程同时发访问资源。但是这会收到资源本身固有特征的限制,有时资源根本不能同时访问,只能互斥访问。如打印机就不允许多个进程在其运行期间交替打印数据,只能互斥使用。由此看来,通过破坏互斥条件来防止死锁的发生是不太可能的

(2)不剥夺条件:为了破坏不剥夺条件,可以指定这样的策略:对于已经获得了某些资源的进程,若新的资源请求不能立即得到满足,则他必须释放所有已获得的资源,以后需要资源时再重新申请。这就意味着,一个进程已获得的资源在运行过程中可以被剥夺,从而破坏了不剥夺条件。该策略实现起来比较复杂,释放以获得资源可能造成前一段工作的失效,重复申请和释放资源会增加系统开销,降低系统吞吐量。这种方法通常不会用于剥夺资源之后代价较大的场合,比如不会用于对打印机的分配,在一个进程正在打印时,不会采用剥夺的方法来解除死锁

(3)请求与保持条件:为了破坏请求与保持条件,可以采用预先静态分配方法。预先静态分配方法要求进程在其运行前一次性申请她所需要的全部资源,在他的资源未满足前,不把他投入运行。一旦投入运行后,这些资源就一直归他所有,也不再提出其他资源请求,这样就可以保证系统不会发生死锁。这种方法既简单又安全,但降低了资源利用率,采用这种方法必须事先知道该进程的全部资源,即使有地资源只能在运行后期使用,甚至有的资源在正常运行中根本不用,也不得不预先统一申请,结果使得系统资源不能充分利用;以打印机为例,一个作业可能旨在最后完成时才需要打印计算结果,但在作业运行前就把打印机分配给它,那么作业整个执行过程中打印机基本处于闲置状态

(4)环路等待条件:为了破坏环路等待条件,可以采用有序资源分配法。有序资源分配法是将系统中所有资源都按类型赋予一个编号(例如打印机为1,磁带机为2等),要求 每一个进程都严格按照递增的次序请求资源,同类资源一次申请完。也就是说,只要进程提出资源Ri,则在以后的资源请求中只能请求排在Ri后面的资源(i为资源编号),对资源请求做了这种限制后,系统中不会再出现几个进程对资源四年的请求形成环路的情况。

这种方法由于对资源编号后不宜修改,从而限制了新设备的添加:不同作业对资源使用顺序也不会完全相同,即便系统对资源编号考录到多数情况,但总会由与系统编号不符的作业,从而造成资源浪费:对资源按序使用也会增加程序编写的复杂性

 

19、死锁的避免

预防死锁的方法中所采用的几种策略,总的来说都是施加了较强的限制条件,虽然实现起来较为简单,但却严重损害了系统性能。在避免死锁的方法中,所施加的限制条件较弱,有可能获得较好的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终处于安全状态,便可以避免死锁的发生

(1)安全状态和不安全状态

在避免死锁的方法中,允许进程动态的申请资源,系统在进行资源分配之前,先计算资源分配的安全性。若此次分配不会导致系统进入不安全状态,便将资源分配给进程,否则进程必须等待

若在某一时刻,系统能按照某种顺序来为每个进程分配其所需的资源,直至最大需求,使每个进程都可顺利完成,则称此时的系统状态为安全状态,称该序列为安全序列。若某一时刻系统存在一个非安全序列,称此时的系统状态为不安全状态。需要注意的是,安全序列在某一时刻可能并不唯一,即可以同时存在多种安全序列

虽然并非所有的不安全状态都是死锁状态,但在系统进入不安全状态后,便可能进入死锁状态;反之,只需系统处于安全状态,系统便可避免进入死锁状态

(2)银行家算法

当一个进程申请使用资源的时候,银行家算法通过先 试探 分配给该进程资源,然后通过安全性算法判断分配后的系统是否处于安全状态,若不安全则试探分配作废,让该进程继续等待。

 

20、死锁的避免与解除

 若系统为进程分配资源时不采取任何措施,则应该是提供死锁检测和解除的手段。

 1.资源分配图:

     系统死锁,可利用资源分配图来描述。

       如上图, 用圆圈代表一个进程,用框代表一类资源。由于一种类型的资源可能有多个,用框中的一个点代表一类资源中的一个资源。从进程到资源的有向边叫请求边,表示该进程申请一个单位的该类资源;从资源到进程的边叫分配边,表示该类资源已经有一个资源被分配给了该进程。

2.死锁定理:

       可以通过将资源分配图简化的方法来检测系统状态  S  是否为死锁状态。简化方法如下:

       (1)、在资源分配图中,找到既不阻塞又不是孤点的进程 Pi (即找出一条有向边与它相连,且该有向边对应资源的申请数量小于等于系统中已有空闲资源数量)。消去它所有的请求边和分配边,使之成为孤立的结点。 在这里要注意一个问题,判断某种资源是否有空闲,应该用它的资源数量减去它在资源分配图中的出度。

       (2)、进程 Pi 所释放的资源,可以唤醒某些因等待这些资源而阻塞的进程,原来的阻塞进程可以变为非阻塞进程。根据(1)中的方法进行一系列简化后,若能消去图中所有的边,则称该图是可完全简化的。S为死锁的条件是:当且仅当 S 状态的资源分配图是不可完全简化的,该条件为死锁定理。
3、死锁解除

一旦检测出系统中出现了死锁,就应该陷入死锁的进程从死锁状态中解除出来,常用的解除死锁的方法有两种:

  • 剥夺资源:从其他进程中抢占足够的资源给死锁的进程以解除其死锁状态
  • 撤销进程:撤销一些进程,知道有足够的资源以分配给其他进程,解除死锁状态。

 

21、死锁与饿死(长时间等待未果)

死锁、饥饿、饿死通常是容易混淆的概念,这里特别说明下

在一个动态系统中,资源的请求与释放是经常发生的进程行为。对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,有分配策略确定资源分配给进程的次序。资源分配策略可能是公平的,能保证请求者在有限的时间内获得所需资源:资源分配策略也可能是不公平的 ,即不能保证等待时间上界的存在。在后一种情况下,即使系统没有发生死锁,某些进程也可能会长时间等待。当等待时间给进程推进和相应带来明显影响时,则称此时发生了进程饥饿,当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时,称该进程被饿死。

考虑一台打印机分配的例子,当有多个进程需要打印文件时,系统按照短作业优先(SJF)的策略排序,该策略具有平均等待时间短的有带你,似乎非常合理,担当短文件打印任务源源不断时,长文件的打印任务将被无限期推迟,导致饥饿以及饿死

有界相关的另外一个概念时活锁。在忙式等待条件下发生的饥饿,称为活锁,例如不公平的互斥算法。虽然此时进程仍然在执行,但有些进程由于无法调度执行,好像发生了死锁一样

饿死与死锁有一定联系:二者都是由于竞争资源而引起的,但又有明显差别,主要表现在如下几个方面

  • 从进程状态考虑,死锁进程都处于等待状态:忙式等待(处于运行或就绪状态)的进程并非处于等待状态,但却可能被饿死
  • 死锁进程等待的是永远不会被释放的资源:而饿死进程等待的是会被释放杠但却不会分配自己的资源,表现为等待时限没有上界(排队等待或忙式等待)
  • 死锁一定发生了循环等待,而饿死则不然。这也表明通过资源分配图可以检测死锁存在与否,但却不能检测是否有进程饿死
  • 死锁一定涉及多个进程,而饥饿或饿死的进程可能只有一个

饥饿和饿死与资源分配策略有关,因而防止饥饿与饿死可从公平性考虑,确保所有进程不被忽视,如多级反馈队列调度算法

 

死锁(操作系统) 2.17 死锁的概念以及产生死锁的原因 死锁的定义 在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统 的处理能力。然而,多个进程的并发执行也带来了新的问题——死锁。所谓死锁是指多个进 程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。 下面我们通过一些实例来说明死锁现象。 先看生活中的一个实例,在一条河上有一座桥, 阅读详情

相关推荐

[操作系统]死锁

我们把这类需要排他性使用的对象称为资源(resource)。资源可以是硬件设备(如磁带机)或是一组信息(如数据库中一个加锁的记录)。通常在计算机中有多种(可获取的)资源。简单来说,资源就是随着时间的推移,必须能获得、使用以及释放的任何东西。资源分为两类:可抢占的和不可抢占的。

m0_51460756的博客 1723

面试整理学习专题2:操作系统

1、并发和并行的理解? 并行指两个或者多个事件同一时刻发生,并发是两个或者多个事件在同一时间间隔发生; 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件(如单核CPU轮转时间片)。 2、同步、异步、阻塞、非阻塞的概念。 同步:一个同步调用发出之后,调用者需要一直等待返回结果。有返回结果后,才能执行后续的操作。 异步:当一个异步调用发出之后,调用者不需要立刻等待返回结果,实际处理这个调用的部件在完成之后,通过状态、回调来通知调用者。 阻塞:调用结果返回前,线程会被挂起,即阻塞。 非阻塞:即使调用结果

努力才是唯一的入场券。 4万+

操作系统相关(进程、线程、死锁、分页等)知识点详解

操作系统简称OS,负责管理协调计算机硬件与软件资源工作的****系统软件屏蔽了硬件层的复杂性,为上层应用软件与用户提供易用的服务。

白话机器学习 1226

死锁产生原因-可剥夺资源和不可剥夺资源

系统中的资源可以分为两类,一类是可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺。例如,优先权高的进程可以剥夺优先权低的进程的处理机。又如,内存区可由存储器管理程序,把一个进程从一个存储区移到另一个存储区,此即剥夺了该进程原来占有的存储区,甚至可将一进程从内存调到外存上,可见,CPU和主存均属于可剥夺性资源。另一类资源是不可剥夺资源,当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机等。 ...

牛牛码特的博客 2491

那些年-SAP固定资产导入AS91 OASV

固定资产起初导入步骤: 第一部分:资产数据导入 1)两个日期配置 填写图片摘要(选填) Specify transfer date/last closed fiscal year 这里的日期填写系统切换日期,如果系统是2015-10-01上线,这里填写2015-09-3 填写图片摘要(选填) Specifylast period posted in prv system 这里指定系统切换的上一期间。这里写2015-09 填写图片摘要(选填) ​2)AS91新增 填写固定资产的分类,公司

阿土工作室 7945

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

废话不多讲,跟紧我,开启你的SpringCloud初体验 首先回顾微服务的基本组成: [图片 here] 生产者:提供服务 消费者:消费服务 服务注册/发现中心:服务注册,发现,监控 所以,首先明白springcloud微服务的架构基础:生产者(client),消费者(client),服务注册/发现中心(server)

叶巨岩的博客 8万+

总结--死锁--面试中高频考点

死锁死锁的概念死锁产生的原因和必要条件(1)资源分类(2)死锁产生的原因(3)死锁产生的必要条件处理死锁的基本方法死锁的预防(1)互斥条件(2)不剥夺条件(3)请求与保持条件(4)环路等待条件死锁的避免(1)安全状态与不安全状态(2)银行家算法死锁的检测和解除(1)死锁检測(2)死锁检测算法(3)死锁解除死锁与饿死 死锁的概念 在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统 的处理能力。然而,多个进程的并发执行也带来了新的问题–死锁。 当多个进程因竞争系统资源或相互通信而处于

宫浩然的博客 1432

从透射谱到能量分布:用Rsoft破解光纤光栅耦合模式的3个关键技巧

本文面向光通信工程师与研究者,分享了利用Rsoft软件深入分析光纤光栅耦合模式的三个关键技巧。通过配置场监视器观察XY截面能量分布、利用传播动画追踪动态过程,并结合模式求解器精准判定相位匹配,帮助用户超越透射谱分析,直观可视化能量从纤芯到包层的耦合与流动,从而优化器件设计。

weixin_29290963的博客 420

死锁的基本介绍

死锁是什么? 死锁产生的必要条件? 如何避免和解决死锁

baidu_41298300的博客 1万+

WandB本地部署踩坑指南:从Docker启动到License更新的完整流程(附常见错误解决方案)

本文详细介绍了Weights & Biases(WandB)机器学习实验管理平台的本地化部署全流程,涵盖从Docker环境搭建、许可证管理到常见错误排查的实战经验。针对企业级应用场景,文章还提供了性能优化、高可用架构设计及开源替代方案Trackio的评估与迁移策略,为构建安全、可控的内部实验追踪平台提供完整解决方案。

potato的博客 567

避坑指南:PVE下N卡直通错误代码43的终极解决思路与dmesg日志分析

本文详细解析了PVE环境下NVIDIA显卡直通时遇到的错误代码43问题,提供了从dmesg日志分析到BIOS配置、PVE宿主机优化及虚拟机设置的完整解决方案。特别针对GTX1060等显卡,分享了驱动版本选择、ROM修补及高级排错技巧,帮助用户彻底解决这一常见难题。

weixin_28693683的博客 287

死锁

死锁在多道程序系统中,由于多个进程分别以各自独立的速度向前推进,因此带来了另外的一个问题——死锁。p:打印机的信号量,且规定这个计算机中只有一个打印机,一个扫描仪。s:扫描仪的信号量。P1、P2分别是两个进程;P1:main(){        P(p);        开始输出;        P(s);        进行输入;        V(s);        继续输出;       ...

long_python的博客 330

YOLOv8剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps!

该摘要介绍了LAMP剪枝方法的创新点和理论分析,重点突出了其最小化L2失真和分层自适应剪枝的特性。LAMP通过引入ξ变量在最坏情况下优化剪枝失真,并简化了计算过程。文章还提供了代码移植的具体步骤,包括创建compress.py文件和相关配置说明。

FJN110的博客 1112

【操作系统】死锁相关知识点

多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放其他资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是 多个进程无限期相互等待 的一种状态。死锁产生的 4 个条件(有一个条件不成立,则不会产生死锁):抢占资源和非抢占资源:一般来说,可抢占资源不会引起死锁,可以在进程间重新分配资源而得到解决。资源分配图(RAG):用有向图描述系统资源和进程的状态。 进程 P1 已经分得了两个 R1 资源,并又请求一个 R2 资源;进程 P2 分得了一个 R1 和一个 R2 资源,并又

学习 & 分享 ~ 7358

122、Android Camera HAL3 框架:Request、Result、Metadata 的异步管道模型

本文深入剖析了Android Camera HAL3框架中的异步管道模型,围绕Request、Result和Metadata三个核心要素展开。作者通过实际案例(黑屏闪退问题)切入,揭示了异步模型中常见的帧序错乱陷阱。文章详细阐释了三个角色的交互机制,指出HAL3采用生产者-消费者模式的关键特征:Request与Result一一对应但不保证顺序。针对开发实践,总结了三个必须加锁的场景和回调函数的锁使用禁忌,并给出解决帧序问题的具体方案(独立帧号生成器)。最后提出五项经验性建议,强调异步模型带来的灵活性与复杂性

sundong_81的博客 212

【异常】Warp终端AI功能403封禁报错I‘m sorry, I couldn‘t complete that request.Request failed with error: ErrorSta

本文针对Warp终端出现的AI功能定向封禁报错,完整还原脱敏后的报错信息、深度解读报错本质,并提供分优先级的全流程可落地解决方案,可直接用于技术排查、内部知识库归档。

奶爸的编程之路,也就一周冷个三天 265

操作系统死锁相关习题

一、选择题 1.在为多道程序所提供的可共享的系统资源不足时,可能出项死锁。但是,不适当的___也可能产生死锁。 A.进程优先权 B.资源的线性分配 C.进程推进顺序 D.分配队列优先权 2.采用资源剥夺法可解除死锁,还可以采用___方法解除死锁。 A.执行并行操作 B.撤消进程 C.拒绝分配新资源 D.修改信号量 3.产生死锁的四个必要条件是:互斥、___、循环等待和不剥夺。 A.请求与阻塞 B.请求与保持 C.请求与释放 D.释放与阻塞 4.发生死锁的必要条件有四个,要防止死锁的发生,可以破换这四个必要条

#两个西柚 3853

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

操作系统死锁题库

网络课课后题 1、在计算机系统拥有的各种软硬件资源中,内存是属于 A、可重用资源 B、不可重用资源 C、临界资源 D、独占资源 解析: 2、下列描述的各种现象中,属于活锁现象的是 A、相关进程进入阻塞状态,且无法唤醒 B、相关进程进入阻塞状态,且可以唤醒 C、相关进程没有阻塞,但是调度时刻被延迟推后 D、相关进程没有被阻塞,可被调度,但是执行没有进展(能上CPU,但得...

闲狗的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

操作系统关键知识点之死锁相关问题(两阶段加锁、通信死锁与饥饿)

核心逻辑阶段1(加锁阶段):进程尝试获取所有所需资源的锁,若某资源已被占用,则释放已获取的所有锁并重新开始。阶段2(释放阶段):成功获取所有锁后,执行更新操作并释放锁。目标:通过“全或无”的加锁策略避免死锁,确保进程在执行操作前拥有全部资源。局限性仅适用于支持回滚和重复执行的场景(如数据库事务),若进程执行不可重复的操作(如网络通信),重新开始可能导致错误。问题类型核心定义典型场景解决策略重点对比两阶段加锁进程分阶段获取/释放锁,确保原子性操作数据库事务更新。

wj_rdk的博客 987

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

操作系统之《死锁与银行家算法》【知识点+详细解题过程】

一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程称为死锁进程。

ysy1119的博客 2276

面试技术栈 —— 操作系统之死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。一、参考文章或视频链接[1] 汤小丹等.《计算机操作系统》.西安电子科技大学出版社.2012.9.峰峦如聚,波涛如怒,山河表里潼关路。望西都,意踌躇。伤心秦汉经行处,宫阙万间都做了土。兴,百姓苦;亡,百姓苦。—— 《山坡羊·潼关怀古》 元·张养浩。

键盘国治理专家的博客 1252

操作系统面试知识大盘点

前言 这篇文章南国根据自己的理解 写一篇在互联网公司面试中操作系统常问的知识点。本篇博客许多内容都是在前人的基础上进行的总结和概括,所以这篇博客 南国还是那他归纳为转载。干货很多,马上到~ 1.基本概念 1.1 并行和并发 这个概念在之前的博客中,我也讲过多次了。之类再做个简单的概述。 并发是指宏观上在一段时间内能同时运行多个程序(按时间片交叉运行),而并行则指同一时刻能运行多个指令。 并行需要硬...

南国的技术栈 852

【操作系统】死锁

如果在一个进程集合中的每个进程都在等待只能有该集合中的其它进程才能引起的事件,而无限期陷入僵持的局面称为死锁。

catkin_ws的博客 909

操作系统---死锁相关

操作系统---死锁

qq_74259765的博客 1227

操作系统——死锁

本文系统介绍了死锁的概念、产生原因、必要条件及处理策略。死锁是指多个进程因竞争资源陷入互相等待的僵局,其产生需要满足互斥、不可剥夺、请求保持和循环等待四个必要条件。处理死锁的策略包括预防(破坏必要条件)、避免(银行家算法)和检测解除(资源剥夺、撤销进程、进程回退)。文章通过实例和算法分析,阐述了如何判断系统安全状态以及避免死锁的方法,为解决操作系统中的死锁问题提供了系统性的解决方案。

Smooth的博客 929

死锁的相关知识

死锁 在计算机系统中有很多独占性的资源,在任一时刻它们都只能被一个进程使用。常见的有打印机、磁带以及系统内部表中的表项。打印机同时让两个进程打印将造成混乱的打印结果;两个进程同时使用同一文件系统表中的表项会引起文件系统的瘫痪。正因为如此,操作系统都具有授权一个进程(临时)排他地访问某一种资源的能力。 两个进程独占性的访问某个资源,从而等待另外一个资源的执行结果,会导致两个进程都被阻塞,并且两个进程都不会释放各自的资源。这种情况就是死锁。 死锁可以发生在任何层面,在不同的机器之间可能会发生死锁,在数据库系统中

qq_36553387的博客 1365
上一篇: 操作系统知识盘点(二)(互斥、同步与信号量)
下一篇: 操作系统知识盘点(四)(内存技术)
fa1lr4in
博客等级 码龄9年 64粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值