操作系统之死锁

死锁(DeadLock)

死锁的概念

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

例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。

产生死锁的原因

    1. 因为系统资源不足。
    2. 进程运行推进的顺序不合适。
    3. 资源分配不当等。

 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。

死锁产生的必要条件

    1. 互斥条件: 一个资源每次只能被一个进程使用。
    2. 
请求与保持: 一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    3. 
不可剥夺(非抢占): 进程已获得的资源,在末使用完之前,不能强行剥夺。
    4. 
循环等待: 若干进程之间形成一种头尾相接的循环等待资源关系。
 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

死锁的处理方法

预防死锁

事先预防,破坏产生死锁的四个必要条件之一。

  • 摒弃“请求和保持”条件:进程在申请资源时,是一次性的。

    摒弃“请求“:当进程来时,一次性分配所有的资源(如果系统满足),这样就不会再有”请求“了。

    摒弃“保持“:只要有一个资源得不到分配,也不给这个进程分配其他的资源。

  • 摒弃“不剥夺”条件:在这种方法中,进程是逐个提出对资源的要求的。如果一个进程,获得了部分资源,但得不到其它资源,这时,它释放自己所占用的资源。
  • 摒弃“环路等待”条件:把资源排序,当进程申请资源时,按序申请。

避免死锁

事先预防,并不是破坏产生死锁的四个必要条件,而是用某种方法去防止系统进入不安全状态,目前在较完善的系统中,常用此方法。银行家算法

安全状态:是指系统能按照某种进程顺序(P1,P2,…Pn),来为每一个进程Pi分配其所需要的资源,直到满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。

检测死锁

并不事先采取任何限制性的措施,也不必检查系统是否已经进入不安全区,此方法允许发生死锁,关键是,发生死锁了,系统可以通过检测机构发现死锁,并精确确定与死锁有关的进程和资源,然后,采取适当措施,从系统中将已经发生的死锁清除

解除死锁

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

时间: 2024-11-04 20:52:18

操作系统之死锁的相关文章

【操作系统】死锁的理解

[操作系统]死锁的理解 2017-05-08 若愚 今天分享给大家操作系统中死锁的相关概念和解决办法,内容来自与自己当时做的笔记和网络~有问题可以后台回复,会尽量回答哦 一.死锁的概念 当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁. 在操作系统中,死锁指的是在多任务的系统中,一个或者多个进程因为请求系统的资源而暂停,而该资源又被其他进程或者自己占用,这样形成的僵持的状态就是死锁. 比如,进程A占有打印机资源,请求音响资源,进程B占用音响但是请

操作系统--并发进程死锁

死锁概念: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程. 死锁产生的条件: (最关键的为第四个条件)             解决死锁的方法:   预防死锁:指进程申请资源必须遵循某些预先制定的限制条件,以破坏产生死锁的四个必要条件中的一个或者几个,防止死锁的发生. 避免死锁:指当进程申请资源时,需要首先判断(预测),如果满足这次资源请求

操作系统中死锁的概念

产生死锁的原因主要是:(1) 因为系统资源不足.(2) 进程运行推进的顺序不合适.(3) 资源分配不当等.如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁.其次,进程运行推进顺序与速度不同,也可能产生死锁.产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用.(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放.(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺.(4) 循环等待条

面试问题之操作系统:死锁的四个必要条件和解决办法

死锁概念及产生原理 概念:多个并发进程因争夺系统资源而产生相互等待的现象. 原理:当一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁. 本质原因: 1)系统资源有限 2)进程推进顺序不合理 死锁产生的4个必要条件 1.互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束. 2.占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源. 3.不

操作系统判断

1. 操作系统的所有程序都必须常驻内存.╳ 2. 进程获得处理机而运行是通过申请而得到的. ╳ 3. 通过任何手段都无法实现计算机系统资源之间的互换. ╳(中断等都可以) 4. 进程控制块中的所有信息必须常驻内存. ╳ 5. 一旦出现死锁, 所有进程都不能运行. ╳(运行不能结束) 6. 所有进程都挂起时, 系统陷入死锁. ╳(挂起的意思是什么?) 7. 优先数是进程调度的重要依据, 一旦确定不能改变. ╳ 8. 同一文件系统中不允许文件同名, 否则会引起混乱. ╳ 9. 用户程序有时也可以在核

预防死锁之银行家算法

如果转载请注明出处:http://blog.csdn.net/gophers 银行家算法是一种可以用来预防死锁的检测算法,正像这种算法的名字一样,系统在分配资源情况就和银行家管理银行资金的情况是相似的.银行家要在贷款的时候协调各个客户之间的业务,最好的情况就是就是把当前的资金合理的分配出去,让余下来的资金依然足够应付近期的其他业务,而且能够确保在有新客户要贷款时之前贷出去的资金已经被收回.操作系统在协调各个进程之间的资源占用关系时也可以套用这种方法. 银行家算法主要由两个部分构成,一个是Safe

软考(软件设计师)注意事项(攻略)

  软件专业的朋友都会去参加软考,我在这里就叙述一下软考(特指软件设计师)的注意事项. l  关于复习时间的安排      1.      对于大学专业就是计算机科学与技术(软件工程方向)的学生,只要平常的专业课学科绩良好,复习就不用费太多功夫,本人真正的复习时间就是一个多月.大概算起来六个星期,比如14年下半年的软考时间是11月8号,那么专业扎实的同学十一过后就可以着手复习,对于平常的专业课成绩不是很理想的同学,可以把复习时间改成两个月,只要肯下劲,通过是不成问题.      2.     

消息队列二三事

最近在看kafka的代码,就免不了想看看消息队列的一些要点:服务质量(QOS).性能.扩展性等等,下面一一探索这些概念,并谈谈在特定的消息队列如kafka或者mosquito中是如何具体实现这些概念的. 服务质量 服务语义 服务质量一般可以分为三个级别,下面说明它们不同语义. At most once 至多一次,消息可能丢失,但绝不会重复传输. 生产者:完全依赖底层TCP/IP的传输可靠性,不做特殊处理,所谓"发送即忘".kafka中设置acks=0. 消费者:先保存消费进度,再处理消

数据库相关知识点(秋招整理)

数据库 1.   数据库事务的 4 个特性是:原子性.一致性.持续性.隔离性 1)   原子性:事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行. 2)   一致性:事务前后,数据库的状态都满足所有的完整性约束. 3)   隔离性:并发执行的事务是隔离的,一个不影响一个.如果有两个事务,运行在相同的时间内,执行相同的功能,同一时间仅有一个请求用于同一数据.设置数据库的隔离级别,可以达到不同的隔离效果. 4)   持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保