认识死锁--操作系统重点【码住!】
创始人
2024-12-26 20:38:13
0

一、定义

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

二、产生原因

死锁的产生通常与以下原因有关:

  1. 系统资源不足:当系统中供多个进程共享的资源(如打印机、内存块等)数量不足以满足进程需求时,进程间会竞争这些资源,从而可能产生死锁。
  2. 进程运行推进顺序不合适:进程运行的顺序和速度不同,可能导致某些进程在持有某些资源的同时等待其他进程释放的资源,从而形成死锁。
  3. 资源分配不当:资源分配策略不合理,也可能导致死锁的发生。

三、死锁产生的条件

1.互斥条件(Mutual Exclusion):
  • 至少有一个资源必须处于非共享模式,即一次只能被一个进程(或线程)占用。这意味着资源是排他性的,不能被多个进程同时访问。
2.请求与保持条件(Hold and Wait):
  • 也被称为“占有并等待”条件。一个进程(或线程)在请求新的资源的同时,不会释放已经占有的资源。即进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占用,此时请求资源的进程将会阻塞,但又对自己已获得的资源保持不放。
3.不可抢占条件(No Preemption):
  • 也称为“不可剥夺”条件。进程(或线程)已获得的资源在未使用完之前,不能被其他进程强行剥夺,只能由持有资源的进程(或线程)自己释放。这意味着资源一旦分配给某个进程,就不能被系统或其他进程强制收回。
4.循环等待条件(Circular Wait):
  • 系统中存在若干进程(或线程),它们形成一种头尾相接的循环等待资源关系。即存在一种进程(或线程)的循环链,链中的每一个进程(或线程)已占有若干种资源中的至少一种,同时每一个进程(或线程)又在等待链中下一个进程(或线程)所占有的资源。这种循环等待的情况会导致所有涉及的进程都无法向前推进

四、解决死锁的几种方式

1. 预防死锁

预防死锁是一种较为简单和直观的事先预防的方法。该方法通过设置某些限制条件,去破坏产生死锁的四个必要条件(互斥条件、请求与保持条件、不剥夺条件、循环等待条件)中的一个或几个,来预防发生死锁。例如:

  • 破坏请求与保持条件:进程在申请资源时,一次性申请所有需要的资源,如果无法一次性获取所有资源,则释放已经占有的资源。
  • 破坏循环等待条件:对资源进行排序,要求每个进程按照顺序申请资源,从而避免循环等待。

然而,预防死锁的方法可能会因为所施加的限制条件过于严格,而导致系统资源利用率和系统吞吐量降低。

2. 避免死锁

避免死锁同样属于事先预防策略,但它并不需要在资源分配前采取各种限制措施去破坏死锁的四个必要条件。而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。例如,使用银行家算法进行资源分配,该算法通过维护几个关键的数据结构(如可利用资源向量、最大需求矩阵、分配矩阵、需求矩阵等),并在资源分配前进行安全性检查,以确保系统不会进入不安全状态。

3. 检测死锁

检测死锁的方法不需要事先采取任何限制性措施,而是允许系统在运行过程中发生死锁。但系统需要设置检测机构,以便及时检测出死锁的发生,并精确地确定与死锁有关的进程和资源。检测方法包括定时检测、效率低时检测、进程等待时检测等。

4. 解除死锁

当检测到系统中已经发生死锁时,需要采取适当措施将进程从死锁状态中解脱出来。常用的方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已经处于阻塞状态的进程,使之转为就绪态,以继续运行。具体的解除死锁的方法包括:

  • 撤消陷于死锁的全部进程。
  • 逐个撤消陷于死锁的进程,直到死锁不存在。
  • 从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。
  • 从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态。

相关内容

热门资讯

透视最新!wepoker透视,... 透视最新!wepoker透视,wepoker免费透视,AI教程(果然存在有挂)1、让任何用户在无需w...
透视能赢!wepoker辅助器... 透视能赢!wepoker辅助器下载,hhpoker辅助靠谱吗(详细辅助规律教程)是一款可以让一直输的...
透视辅助“wpk有脚本吗”其实... 透视辅助“wpk有脚本吗”其实有挂(辅助挂)详细辅助攻略方法1、每一步都需要思考,不同水平的挑战会更...
hhpoker怎么开透视!we... hhpoker怎么开透视!wepoker有辅助工具吗,aapoker辅助是真的吗(详细辅助2025新...
透视最新!拱趴大菠萝怎么开挂,... 透视最新!拱趴大菠萝怎么开挂,丰城双剑新版最强高分攻略(切实真的是有挂);1、下载好丰城双剑新版最强...
hhpoker透视脚本!wep... hhpoker透视脚本!wepoker私人局俱乐部,wpk有脚本吗(详细辅助安装教程);无聊就玩这款...
透视玄学!wepoker透视脚... 透视玄学!wepoker透视脚本免费下载,wepokerplus辅助,攻略方法(真是真的是有挂)1、...
透视科技“wepoker脚本”... 透视科技“wepoker脚本”切实是真的有挂(辅助挂)详细辅助系统教程辅助器中分为三种模型:软件透明...
透视教学!wepoker辅助工... 这是一款非常优秀的pokemmo修改器手机版 ia辅助检测软件,能够让你了解到pokemmo修改器手...
透视工具!hhpoker免费透... 透视工具!hhpoker免费透视脚本,赣牌圈有挂吗(切实是有挂)1、进入游戏-大厅左侧-新手福利-激...