操作系统--死锁

简介

在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是死锁。发生死锁后若无外力干涉,这些进程都将无法向前推进


死锁、饥饿、死循环的区别

image-20220805215439806


死锁产生的必要条件

  • 互斥条件

  • 不可剥夺条件

  • 资源的占用并请求条件

  • 循环等待条件

image-20220805220433112


什么时候会产生死锁

  • 临界资源的竞争

  • 请求和释放资源的顺序不当

image-20220805221249778


死锁处理策略

  1. 预防死锁,破坏死锁产生的四个必要条件中的一个或几个

  2. 避免死锁,用某种方法防止系统进入不安全状态,从而避免死锁(如银行家算法)

  3. 死锁检测和解除,允许死锁的发生,不过操作系统会负责检测死锁的发生,然后采取某种措施解除死锁

预防死锁

  1. 破坏互斥条件

    互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁

image-20220805222453779

  1. 破坏不剥夺条件

    不剥夺条件:进程所获得的资源在未使用完之前,不能有其他进程强行夺走,只能主动释放

image-20220805222729296

  1. 破坏请求和保持条件

    请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占用,此时请求进程被阻塞,但又对自己已有的资源保持不放

image-20220805223326524

  1. 破坏循环等待条件

    循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得资源同时被下一个进程所请求

image-20220805223706036

避免死锁

什么是安全序列

image-20220805230348157

image-20220805230520447

image-20220805230557993

image-20220805230759751

银行家算法

image-20220805231017953

image-20220805231210872

image-20220805231313102

image-20220805231347982

银行家算法

image-20220805231627490

image-20220805231736551


检测和解除

死锁检测

image-20220805232223043

image-20220805232725067

死锁解除

image-20220805233250638

posted @ 2022-08-06 15:45  伊文小哥  阅读(52)  评论(0)    收藏  举报