• 【操作系统】死锁的理解


    【操作系统】死锁的理解

    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>序列为安全序列),来为每个进程分配其所需资源,直到最大需求,使每个进程都可顺序完成。若系统不存在这样一个安全序列,则称系统处于不安全状态。

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

    喜欢就关注哦~

  • 相关阅读:
    小码哥IOS大神班11期 大神班
    最近整理的一些前端面试题
    emm, flutter来了, 对比下 RN?
    爱Pia戏服务协议
    linux cent下redis安装、密码设置、开机启动服务
    mysqld 不定时挂掉,使用定时任务cron检测到挂掉后自动重启mysql
    《结对-结对编项目作业名称-需求分析》
    结对编程
    课堂作业第0周
    App Distribution Guide (二)
  • 原文地址:https://www.cnblogs.com/robin2ML/p/6863238.html
Copyright © 2020-2023  润新知