0
点赞
收藏
分享

微信扫一扫

【408计算机考研】操作系统——第二章 进程与线程(四)

晴儿成长记 2022-04-30 阅读 80

文章目录

第二章 进程与线程(四)

2.4 死锁

2.4.1 死锁的概念

  1. 死锁的定义
    死锁:多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进

  2. 死锁产生的原因

    1)系统资源的竞争:只有对不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的
    2)进程推进顺序非法:请求和释放资源的顺序不当;信号量使用不当也会造成死锁
    3)死锁产生的必要条件
    互斥:在一段时间内某资源仅为一个进程所占有
    不剥夺:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走(只能是主动释放)
    请求和保持:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有
    循环等待:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求

  3. 死锁的处理策略

    资源分配策略各种可能模式主要优点主要缺点
    死锁预防保守,宁可资源闲置一次请求所有资源,资源剥夺,资源按序分配适用于做突发式处理的进程,不必进行剥夺效率低,进程初始化时间延长;剥夺次数过多;不便灵活申请新资源
    死锁避免是“预防”和“检测”的折中(在运行时判断是否死锁)寻找可能的安全允许顺序不必进行剥夺必须知道将来的资源需求;进程不能被长时间阻塞
    死锁检测宽松,只要允许就分配资源定期检查死锁是否已经发生不延长进程初始化时间,允许对死锁进行现场处理通过剥夺解除死锁,造成损失

2.4.2 死锁预防

  1. 破坏互斥条件:有些资源必须互斥使用,无法破坏互斥条件
  2. 破坏不剥夺条件:增加系统开销,降低吞吐量
  3. 破坏请求和保持条件:采用预先静态分配方法。严重浪费系统资源,还可能导致饥饿现象
  4. 破坏循环等待条件:为了破坏循环等待条件,可采用顺序资源分配法。浪费系统资源,并造成编程不便

2.4.3 死锁避免

  1. 系统安全状态能找到一个分配资源的序列能让所有进程都顺利完成
    并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可以避免进入死锁状态。
    在这里插入图片描述
  2. 银行家算法采用预分配策略检查分配完成时系统是否处在安全状态!!!

2.4.4 死锁检测和解除

  1. 资源分配图:圆圈代表一个进程,框代表一类资源,进程到资源的有向边叫请求边,资源到进程的边叫分配边
  2. 死锁定理:S为死锁的条件是当且仅当S状态的资源分配图是不可完全简化的;若能消去图中所有的边,则称该图是可完全简化的。
  3. 死锁解除
    1)资源剥夺法:挂起某些死锁进程并抢夺它的资源,以便让其他进程继续推进
    2)撤销进程法:强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源
    3)进程回退法:让一个或多个进程回退到足以回避死锁的地步,进程回退时自愿释放资源而不是被剥夺
举报

相关推荐

0 条评论