死锁的必要条件以及预防死锁

 我来答
腾扬数码
2022-06-13 · TA获得超过2800个赞
知道小有建树答主
回答量:3679
采纳率:100%
帮助的人:193万
展开全部
同时满足以下四个条件可能产生死锁,只要下面有一个条件不满足,必定不会死锁。

进程对所分配的资源进行排他性的使用,也就是同一时间一个资源只能被一个进程所访问。其他请求的进程来了,也只有等待,直到占有该资源的进程释放。

进程已经保持了至少一个资源,但又提出新的资源请求,而请求的资源被其他进程使用,那么此请求进程被阻塞,但是又对自己已获得的资源保持不放。

进程已经获得的资源在未使用之前不能被抢占,只能在进程使用完时自己释放。

在发生死锁的时候,必然存在一个进程-资源的循环链路,也就是p0在等待p1所占有的资源,p1在等待p2所占有的资源,·····,pn在等待p0所占有的资源。

由于第一个互斥条件是非共享设备所必须的,不能改变,所以预防主要从后三个入手。

所有的进程在开始运行之前就把所需要的资源一次性的获取到,这样在进程运行期间就不会再去请求资源了。破坏了请求条件。

是对第一种方法的改进,它允许一个进程只获取运行初期所需要的资源后,便开始运行。进程运行的过程中再逐步释放已分配给自己的,或已经使用完毕的资源,然后再请求新的资源

当一个已经拥有资源的进程去请求其他资源时,必须释放所拥有的资源,等需要时再次重新申请。这意味着进程已占有的资源会被暂时的释放,或被强占了,破坏了“不可强占”条件。

规定每个进程按序号递增的顺序请求资源,在申请资源序号低的时候需要释放高序号的资源,这样就不会环状的请求链路了,破坏了“循环等待”条件

就是根据需求产生一个安全序列,让每一个进程不存资源不够的现象。
Max 表示该进程所需要的每一类资源的最大数量。
Allocation 表示该进程已经拥有的资源数量。
Need 表示该进程还需要多少资源。
Available 表示当前系统可用的资源。
满足关系:max=allocation+need。
小括号的内容不需要看。

要产生一个分配资源安全的进程序列号。只需要Available的数量大于Need的数量就可以把资源分配给它了,然后再把该进程所Allocation的资源加上,再进行下一个循环就可以了。

产生的安全序号为:p1,p3,p4,p2,p0,当所有的进程分配完以后就是安全的状态了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式