【操作系统】死锁的理解

【操作系统】死锁的理解

2017-05-08 若愚 

 

今天分享给大家操作系统中死锁的相关概念和解决办法,内容来自与自己当时做的笔记和网络~有问题可以后台回复,会尽量回答哦

 

一、死锁的概念

    当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。

    在操作系统中,死锁指的是在多任务的系统中,一个或者多个进程因为请求系统的资源而暂停,而该资源又被其他进程或者自己占用,这样形成的僵持的状态就是死锁。

    比如,进程A占有打印机资源,请求音响资源,进程B占用音响但是请求打印机资源。这样在没有外力的作用下将导致死锁状态。

《【操作系统】死锁的理解》

 

二、死锁产生的条件

  1. 禁止抢占:no preemption:一个进程占有某种资源不能被强行剥夺,只能自己放弃该资源;

  2. 持有和等待:hold and wait:进程占有某种资源同时请求别的资源;

  3. 互斥:mutual exclusion :一种资源同时只能被一个进程使用;

  4. 循环等待:circular waiting:形成一个等待的回路;

要想产生死锁,四种条件缺一不可。

三、死锁的三种处理策略

  1. 死锁的预防:通过设定一些限制条件,破坏“禁止抢占”、破坏“持有等待”、破坏“资源互斥”和破坏“循环等待”四个死锁产生条件之一;

  2. 死锁的避免:资源的动态分配中,采用某种策略防止系统进入死锁状态,比如银行家算法,银行家算法其实不需要书上的公式那么麻烦,理解了其实很简单,次下次单独讲一次银行家算法;

  3. 死锁的检测和解除:分配资源时候不采取任何措施,而是在死锁产生之后再进行解决,这里一个概念就是资源分配图,比如:

     

     

    《【操作系统】死锁的理解》

    这就是死锁的检测方法之一,图中 的状态明显不是一个死锁状态。

 

四、死锁和不安全状态的关系

    安全状态:指系统能按某种顺序如<P1,P2,…,Pn>(称<P1,P2,…Pn>序列为安全序列),来为每个进程分配其所需资源,直到最大需求,使每个进程都可顺序完成。若系统不存在这样一个安全序列,则称系统处于不安全状态。

    并非所有的不安全状态都是死锁状态,只是系统进入了不安全状态之后有可能进入死锁状态,只要系统处于安全状态就可避免进入死锁状态。

《【操作系统】死锁的理解》

 

喜欢就关注哦~

《【操作系统】死锁的理解》

 

    原文作者:自嗨锅
    原文地址: https://www.cnblogs.com/robin2ML/p/6863238.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞