首页 > 编程知识 正文

什么是死锁产生的原因,如何避免滑档滑档的原因

时间:2023-05-04 17:04:28 阅读:157518 作者:3033

如何避免死锁的原因死锁? 1、死锁原因。 1、什么是死锁? 死锁是指多个进程在运行过程中因争夺资源

如果进程如此僵硬,没有外力作用,它们将无法执行任务。

举个例子来说明:

此时,若有一个线程a,则以先获取锁a、再获得锁b的顺序取得锁定,同时若有一个线程b,则以先获取锁b、再获得锁a的顺序取得锁定。

如下图所示。

`

.

.

2 )死锁的原因是1)竞争资源;

2)进程间推进顺序非法;

a .竞争资源:系统中的资源可以分为两类:

可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程夺走,比如:CPU就属于可剥夺性资源;

不可剥夺资源,是指当系统把这类资源分配给某进程后,不能再强制收回,只能在进程将任务完成后、自行释放,比如:磁带机、打印机等。

死锁的原因之一是竞争资源,竞争不可剥夺资源

例如,当前只有一台打印机可供进程P1使用。 如果P1占用了打印机,并且此时进程P2也需要使用打印机,则P2将被阻止。 ) )

b .进程间的推进顺序为非法进程P1持有资源R1,进程P2持有资源R2时,这两个进程将进一步前进。

也就是说,当P1尝试获取资源R2,P2尝试获取资源R1时,P1的资源R2被P2占用并阻塞,P2的资源R1被P1占用并阻塞,从而发生进程死锁。

.

.

.

3 )发生死锁的4个必要条件:产生死锁的必要条件:

1互斥条件:进程必须独占控制分配的资源。 这意味着,在一段时间内,某个资源只被一个进程占用。

如果在2请求和保持条件资源请求中进程被阻止,则使获得的资源保持不变。

3不可剥夺条件:流程获得的资源在未使用之前不得被剥夺,只能在使用结束时由流程自身释放。

4循环等待条件:即,形成循环队列,其中P1占用P2资源,P2占用P3资源,以及P3占用P1资源。

二、死锁问题的解决:概述:1)死锁的预防; (一次分配资源,一个资源也不分配,可以剥夺资源,资源的有序分配方法)2)避免死锁(银行家算法)3)解除死锁; (授予资源、取消进程)1)预防死锁:1 资源一次性分配

破坏了http://www.Sina.com/(http://www.Sina.com/)

一次性分配完所有的资源

也就是说,在向一个进程分配资源时,在不能分配该进程所需所有资源的情况下,直接分配请求条件! (破坏请维持条件)

2 一个资源也不分配

也就是说,虽然某个进程获得了部分资源,但http://www.Sina.com/(http://www.Sina.com/)

一个资源也不给该进程分配

也就是说,将系统改为3 可剥夺资源,反之亦然(得不到其它资源,则自动释放自己已经占有的资源)

2 )死锁: 破坏不可剥夺条件

4 资源有序分配法

给每类资源都赋予一个编号,每一个进程按编号递增的顺序请求资源

1 )在避免死锁的策略中,允许进程动态地申请资源。 因此,系统在进行资源分配之前,必须先从破坏循环等待条件

这次分配给http://www.Sina.com/http://www.Sina.com /

其中最具代表性的死锁避免算法是引言:

2银行家算法:银行家算法是避免死锁最具代表性的算法。 简单的说明是用避免死锁的方法`允

许进程动态地申请资源`,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。 1.如何判断分配资源的安全性:存在安全序列则说明系统是安全的,如果不存在则系统不安全,但不安全状态不一定引起死锁。2.什么是安全序列:安全序列是指一个进程序列{P1,…,Pn}是安全的,即,对于每一个进程Pi(1≤i≤n),它以后需要的资源量 不超过 系统当前剩余资源量与所有进程Pj (j < i )当前已占有的资源量之和。(即在分配过程中,不会出现 某一进程后续需要的资源量 比 其他所有进程及当前剩余资源量总和 还大的情况。)3.原理过程:系统给当前进程分配资源时,先检查是否安全:在满足当前的进程X的资源申请之前,判断一下,是否还能有足够的资源去满足 下一个 距最大资源需求最近 的进程,若可以满足,则继续检查下一个 距最大资源需求最近 的进程,若均能满足所有进程,则表示为安全,可以允许给当前进程X分配其所需的资源申请,否则让该进程X进行等待。注:检查是否安全的过程中,每满足了一个进程,则进行下个检查时,当前可用资源为回收上一个进程资源的总值,每满足一个进程表示此进程已结束,资源可回收。)

.

3)解除死锁:

​ 当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有以下几种:

1> 给予资源:

​ 从其它进程剥夺足够数量的资源,给予死锁进程,以解除它的死锁状态;

2> 撤消进程:

​ 可以直接撤消死锁进程撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止;

​ 所谓代价是指优先级、进程的重要性和价值等。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。