0
点赞
收藏
分享

微信扫一扫

操作系统之 死锁

五殳师兄 2022-04-21 阅读 81
后端

什么是死锁

在并发条件下, 两个或两个以上的进程在运行过程中因争夺资源而产生的一种僵局,若无外界作用,这组进程将无法推进

死锁产生的条件

产生死锁的四个必要条件

  • 互斥条件

    只有对必须互斥使用的资源的争抢才会导致死锁,哲学家的筷子,编程里的互斥锁

  • 不剥夺条件

    进程获得的互斥资源在未使用之前,不能由其他进程强行夺走,只能主动释放

  • 请求和保持条件

    进程已经保持了至少一个资源,但又提出了新的资源请求

  • 循环等待条件

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

    (循环等待不一定产生死锁,死锁一定存在循环等待;当系统的每类资源只有一个,那么循环等待就必然导致死锁)

什么情况下会产生死锁

对不可剥夺资源的不合理分配,可能导致死锁

死锁的处理

预防死锁

  • 破坏互斥条件

image-20220420162634904

  • 破坏不剥夺条件

image-20220420162834546

  • 破坏请求和保持条件

image-20220420161901132

  • 破坏循环等待条件

image-20220420163023048

避免死锁

避免死锁的算法

银行家算法

在资源分配之前先判断这次分配是否导致系统进入不安全状态,以此决定是否允许资源分配请求,这就是银行家算法的核心。

image-20220420165550574

死锁的检测和解除

资源分配图

image-20220420171358510

资源分配图的简化

在资源分配图中,找出一个既不阻塞又非独立的进程节点P. 在顺利的情况下,p可获得所需资源而继续运行,直至运行完毕,再释放其所占有的全部资源,这相当于消去了P的请求和分配边,使之成为独立的节点。

进行一系列如上述的操作后,若能消去图中的所有边,使所有的进程结点成为独立结点,则称为可完全简化的

死锁定理

若某个时刻系统的资源分配图是不可完全简化的,那么此时系统死锁

解除死锁

image-20220420181925541

举报

相关推荐

0 条评论