死锁的相关知识简述

死锁的概念

死锁是多个进程在运行过程中占有不会释放的资源,相互申请其他进程不会释放的资源,若无外力作用,都将无法继续推进

产生死锁的原因

1.竞争的资源

1.可剥夺资源:某个进程获得这类资源,该资源能被其他进程或者系统剥夺使用,如cpu,主存
2.不可剥夺资源:当系统把这类资源分配给某个进程,该资源不能被剥夺,必须等到该进程用完释放
3.临时资源:包括硬件中断,信号,消息,缓冲区内的消息等
产生死锁的资源竞争包括不可剥夺资源和临时资源

2.进程间的推进顺序非法

进程在运行过程中,请求和释放资源的顺序不当,导致进程产生死锁

死锁产生的四大必要条件

1.互斥条件:进程要求对所分配的资源进行排他性控制,即某一资源在一段时间内仅被一个进程占有
2.请求与保持条件:一个进程因请求资源而阻塞,对已经获得的资源保持不放
3.不剥夺条件:进程已经获得的资源,在未使用完释放前不能剥夺,只能在使用完后自行释放
4.环路条件:系统中若干进程形成一个环路,该环路中每个进程都在等待着相邻进程所占有的资源

预防死锁的方法

1.资源一次性分配:一次性分配所有资源,破坏请求条件
2.只要有一个资源得不到分配,也不给该进程分配其他资源,破坏保持条件
3.当一个已保持了某些不可剥夺资源的进程,请求新的资源而得不到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请,破坏不可剥夺条件
4.釆用顺序资源分配法,系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,破坏环路条件

避免死锁的办法

1.判断“系统安全状态”法:在进行系统资源分配之前,先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程; 否则,让进程等待
2.银行家算法:首先需要定义状态和安全状态的概念。系统的状态是当前给进程分配的资源情况。因此,状态包含两个向量Resource(系统中每种资源的总量)和Available(未分配给进程的每种资源的总量)及两个矩阵Claim(表示进程对资源的需求)和Allocation(表示当前分配给进程的资源)
安全状态是指至少有一个资源分配序列不会导致死锁。当进程请求一组资源时,假设同意该请求,从而改变了系统的状态,然后确定其结果是否还处于安全状态。如果是,同意这个请求;如果不是,阻塞该进程知道同意该请求后系统状态仍然是安全的。

银行家算法通俗解释

1.申请的贷款额度不能超过银行现有的资金总额
2.分批次向银行提款,但是贷款额度不能超过一开始最大需求量的总额
3.暂时不能满足客户申请的资金额度时,在有限时间内给予贷款
4.客户要在规定的时间内还款

检测死锁

首先为每个进程和每个资源指定一个唯一的号码;
然后建立资源分配表和进程等待表。
1.如果资源分配图中没有环路,则系统没有死锁;
2.如果资源分配图中出现了环路,则系统可能有死锁。

解除死锁

1.资源剥夺法:挂起某些死锁进程,并抢占它的资源,将资源分配给其他死锁进程以解除死锁
2.撤销进程法:直接撤销死锁进程或者代价较小的进程,直至有足够资源可用,解除死锁
代价:进程优先级,运行代价,进程价值
3.进程回退法:让一个或多个进程回退到可避免死锁的状态,是自愿释放资源,要求系统保持进程的历史信息,设置还原点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值