N进程M资源死锁问题

某系统有同类资源m个供n个进程共享,如果每个进程最多申请x个资源(1<=x<=m),且各进程的最大需求量之和小于(m+n),试证明该系统不会发生死锁。

分析:当每个进程都申请x-1个资源,这个时候如果系统没有资源了,它们中任何一个进程,如果再提出申请1个资源的要求,就会死锁。如果系统还有1个资源,就满足了提出申请资源的某一个进程,它释放所持有的x-1个资源,死锁局面被打破。
所以如果系统死锁必有
n ( x − 1 ) + 1 > m n(x-1)+1>m n(x1)+1>m
化简一下可以得到
n x > m + n − 1 nx>m+n-1 nx>m+n1
进一步由不等式可以推出
n x > m + n nx>m+n nx>m+n
这和题目中的条件nx < (m+n)矛盾。


再来一道作业题:
在这里插入图片描述

  • 23
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 假设该系统会发生死锁,那么必然存在一个进程集合P和资源集合R,满足以下条件: 1. P中的每个进程都在等待R中的某个资源。 2. R中的每个资源都被P中的某个进程请求。 根据题目条件,每个进程至少请求一个资源,因此可以得到: n <= m 因此: n + n <= m + n 即: 2n <= m + n 因为n个进程最多需要资源数之和小于(m+n),所以: n个进程至多占用m+n个资源。 因此,根据抽屉原理,必然存在至少一个进程可以获得它需要的所有资源,从而不会发生死锁。因此,当n个进程最多需要资源数之和小于(m+n)时,该系统不会发生死锁。 ### 回答2: 当n个进程最多需要资源数之和小于(m n)时,假设系统中存在资源分配引起的死锁。 首先,我们假设发生死锁,则必然会存在一个进程安全序列。根据死锁的定义,进程安全序列是指在该序列中,每个进程都能够顺利完成且不会被阻塞。因此,如果存在一个进程安全序列,说明系统是处于一个安全状态。 我们来考虑一个由n个进程组成的进程安全序列,其中每个进程至少请求一个资源。假设进程P_i是这个安全序列中的第i个进程,P_i请求的资源数量为r_i,则该序列满足以下两个条件: 1. 每个进程P_i请求的资源数量r_i不超过m。 2. 对于任意i,满足 r_1 + r_2 + ... + r_i <= m。 根据题设条件,n个进程最多需要资源数之和小于(m n),因此存在一个安全序列满足上述条件。 假设发生死锁,则必然会存在一个进程安全序列。则我们可以得出结论:当n个进程最多需要资源数之和小于(m n)时,系统不会发生死锁。 ### 回答3: 当系统中有n个进程时,每个进程至少请求一个资源(最多不超过m),即每个进程资源需求量在1到m之间。 假设系统中有n个进程,每个进程资源需求量分别为x1, x2, ..., xn。其中,xi在1到m之间。 因为每个进程至少请求一个资源,所以每个进程资源需求量之和至少为n。 即,x1 + x2 + ... + xn ≥ n 又因为每个进程资源需求量在1到m之间,所以每个进程资源需求量之和最大为n * m。 即,x1 + x2 + ... + xn ≤ n * m 所以,n ≤ (x1 + x2 + ... + xn) ≤ n * m 即,n ≤ Σxi ≤ n * m 进一步,我们有n < (n * m) + 1 因此,当n个进程最多需要资源数之和小于(m n)时,即n < (n * m) + 1时,有n * m个资源能够满足n个进程资源需求,系统不会发生死锁。 注:这里指的是资源类型相同的情况下。若资源类型不同,则需要考虑资源的互斥性等因素,不能简单地通过资源数之和来判断是否会发生死锁

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值