【软考】死锁

目录

一、基本概念
  • 1.死锁是指两个以上的进程互相都要使用对方已占有的资源,导致资源无法继续运行下去的现象。
  • 2.例如:吃饭需要使用2根筷子,张三有一根筷子,李四也有一根筷子,张三对李四说让李四的筷子给张三,张三吃完后再给李四,李四也是这么说的,然后双方一直僵持,导致都没吃上饭
二、死锁的条件
  • 1.死锁的四个必要条件为:互斥条件,保持和等待条件,不可剥夺条件,环路等待条件,四个条件缺一不可,同时满足才能形成死锁
  • 2.互斥条件:一个资源每次只能被一个进程使用,如果资源是共享的,所有进程都可以使用,就不会产生死锁的现象。一根筷子要么被张三使用,要么被李四使用
  • 3.保持和等待条件:一个进程因请求其它资源被阻塞时,也不释放已获得的资源。保持自己持有的资源,等待他人释放资源。张三持有一根筷子,等待李四给筷子;李四持有一根筷子,等待张三给筷子
  • 4.不剥夺条件:有些系统资源是不可剥夺的,当进程已获得不可剥夺的资源,系统不能强行收回,只能等进程完成时自己释放。张三还差一根筷子,不能强行抢李四的筷子,必须得等李四主动给才行
  • 5.环路等待条件:若干个进程形成资源申请环路,每个都占用对方要申请下一个资源。张三要李四的筷子,李四要张三的筷子,形成环状;若王五也有一根筷子给了张三,则破坏了环状,可以破除死
三、解决死锁
3.1 预防死锁
  • 1.破坏导致死锁的4个必要条件之一就可以预防死锁,属于事前检查
  • 2.预先静态分配法:用户申请资源时,申请所需的全部资源,破坏保持和等待条件,不需要等待其它进程释放的资源。一次性给张三2根筷子,吃完后释放掉2根筷子,然后一次性给李四2根筷子
  • 3.资源有序分配法:将资源分层排序,保证不形成环路,得到上一层资源后,才能够申请下一层资源。给筷子加上编号,1号筷子和2号筷子,首先给张三分配1号筷子,李四等待,然后给张三分配2号筷子,张三吃完后,释放1号筷子,分配1号筷子给李四,张三释放2号筷子,分配2号筷子给李四
3.2 避免死锁
  • 1.避免是指进程在每次申请资源时判断这些操作是否安全,属于事前检查
  • 2.银行家算法:对进程发出的资源请求进行检测,如果发现分配资源后系统进入不安全状态,则不予分配,否则分配。安全但会增加系统的开销
3.3 检测死锁
  • 1.使用死锁检测方法,此方法对资源的分配不加限制,允许死锁产生。但系统定时运行一个死锁检测程序,如果检测到死锁则去解除
3.4 解除死锁
  • 1.资源剥夺法:从一些进程那强行剥夺足够数量的资源分配给死锁进程
  • 2.撤销进程法:根据某种策略逐个地撤销死锁进程,直到解除死锁为止
四、进程管理
  • 1.进程管理是操作系统的核心,设计不当会出现死锁问题。
  • 2.如果进程在等待一件不可能发生的事,进程就死锁了
  • 3.如果多个进程产生死锁,就会造成系统死锁
  • 4.系统不可能发生死锁的最小资源数:(w-1)*m+1<=n
  • 5.每个进程都需要w个资源,一共m个进程,在极端情况下,每个进程都分配到了w-1个资源,所以都无法完成任务,则会死锁,再给其中任意一个进程分配1个资源,那么该进程拿到了w个资源,则可以完成任务,释放掉资源后,其它进程也可以依次拿到w个资源完成任务
五、最小资源数计算
5.1 例题1
  • 1.系统有5个进程:A、B、C、D、E。这5个进程都需要4个系统资源。如果系统至少有多少个资源,则不可能发生死锁。

  • 2.一定死锁的情况:某个进程分配了3个资源,其它进程均没有分配到资源。极端情况下,所有资源都给一个进程,对于A,需要4块钱才能办事,给A零到三块钱,都不会办事的。因此资源小于4时,一定会发生死锁。

  • 3.可能正常执行的情况:极端情况下,4个资源都分配给同一个进程,即

  • 4.可能死锁的情况,极端情况下,15个资源平均分配给5个进程,即每个进程分配到3个资源,即

  • 5.因此资源数在4到15个时,可能死锁,可能正常执行

  • 6.当资源数大于15时,必定不会死锁,即

  • 7.假设第16号资源给到进程B,进程B得到资源后,运行完,释放了4个资源,再将释放资源分配其它任意进程,其它进程均可完成任务,释放所持有的资源

  • 8.因此资源数大于15时,必定不会死锁

相关推荐
架构师Wu老七21 小时前
【软考】系统架构设计师-信息系统基础
系统架构·软考·系统架构设计师·信息系统基础
萨达大1 天前
23种设计模式-模板方法(Template Method)设计模式
java·c++·设计模式·软考·模板方法模式·软件设计师·行为型设计模式
架构师Wu老七2 天前
【软考】系统架构设计师-信息安全技术基础
网络·安全·web安全·软考·系统架构设计师
萨达大2 天前
23种设计模式-备忘录(Memento)设计模式
java·c++·设计模式·软考·备忘录模式·软件设计师·行为型设计模式
萨达大2 天前
23种设计模式-访问者(Visitor)设计模式
java·c++·设计模式·软考·访问者模式·软件设计师·行为型设计模式
it技术分享just_free3 天前
软考教材重点内容 信息安全工程师 第 4 章 网络安全体系与网络安全模型
网络安全·信息安全·软考·网络安全模型
萨达大3 天前
23种设计模式-状态(State)设计模式
c++·设计模式·状态模式·软考·软件设计师·行为型设计模式
架构师Wu老七4 天前
【软考】系统架构设计师-数据库设计基础
数据库·软考·系统架构设计师
架构师Wu老七5 天前
【软考】系统架构设计师-计算机系统基础(4):计算机网络
计算机网络·系统架构·软考·系统架构设计师
架构师Wu老七6 天前
【软考】系统架构设计师-计算机系统基础(2):操作系统
系统架构·操作系统·软考·系统架构设计师