死锁核心概念

死锁核心概念

1.什么是死锁

在多个并发进程中,互相占用对方资源,

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程

产生条件

如果在一个系统中以下四个条件同时成立,那么就能引起死锁:

(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

我们强调所有四个条件必须同时成立才会出现死锁。循环等待条件意味着占有并等待条件,这样四个条件并不完全独立。

解决死锁的策略

  • 采用静态资源分配方法 -----预防死锁
  • 采用有控资源分配方法 -----避免死锁
  • 死锁的检测与忽略

处理死锁的思路如下:

预防死锁:破坏四个必要条件中的一个或多个来预防死锁

避免死锁:在资源动态分配的过程中,用某种方式防止系统进入不安全的状态。

检测死锁:运行时产生死锁,及时发现死锁,将程序解脱出来。

解除死锁:发生死锁后,撤销进程,回收资源,分配给正在阻塞状态的进程。

在这里插入图片描述

预防死锁的办法:

破坏请求和保持条件:1.一次性的申请所有资源。之后不在申请资源,如果不满足资源条件则得不到资源分配。2.只获得初期资源运行,之后将运行完的资源释放,请求新的资源。

破坏不可抢占条件:当一个进程获得某种不可抢占资源,提出新的资源申请,若不能满足,则释放所有资源,以后需要,再次重新申请。

破坏循环等待条件:对资源进行排号,按照序号递增的顺序请求资源。若进程获得序号高的资源想要获取序号低的资源,就需要先释放序号高的资源。

死锁的解除办法:

1、抢占资源。从一个或多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。

2、终止(撤销)进程:将一个或多个死锁进程终止(撤销),直至打破循环环路,使系统从死锁状态解脱

银行家算法

为银行发放现金贷款时不会发生不能满足客户需要的情况,后续用在操作系统中避免死锁

核心思想:

如果进程提出资源申请时,这次分配会导致系统不安全,就暂时不答应,让它先等着

一共10个资源

进程 已占用 还需 可分配
p1 4 4 X
p2 2 2
p3 2 7 X

因为如果剩下两个资源不分配给p2,也是不足缓解p1和p3的压力和贪心,还是会导致线程阻塞,

所以先给满足的,而且安全的人,然后它用完就会归还

这时候归还了,系统资源剩4个

进程 已占用 还需 可分配
p1 4 4
p2 0 0 无需分配
p3 2 7 X

这样就分配给p1 4个资源,再归还,就有8个资源,完全满足p3的需要

这个有点像贪心的分支,谁满足就给谁,然后继续算剩下的

ps:每一轮都是从序号小的进程开始检查分配**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章