N进程M资源死锁问题

给不记得题目具体内容的兄弟们一个前排提醒

  1. 系统共有同类互斥资源——m个;
  2. 目前共有并行的进程——n个;
  3. 每个进程对资源的最大需求——w个

下面给出分析:此时系统总共需要nw个资源,如果每个进程都少一个资源那么就是nw - n , 剩余资源就是 m - (nw - n), 如果剩余资源大于0的话就不会产生死锁。

所以我在查资料的时候会有这两种公式:

  1. m  > n(w - 1)
  2. m >= n(w - 1) +1

那为什么要假设每个进程都少一个资源呢?

        这个条件的意义呢,是确保系统中有足够的资源,来满足所有进程的最大需求,从而避免资源的竞争和互相等待,这是一种保守的假设,进而避免死锁的发生。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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个进程资源需求,系统不会发生死锁。 注:这里指的是资源类型相同的情况下。若资源类型不同,则需要考虑资源的互斥性等因素,不能简单地通过资源数之和来判断是否会发生死锁

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值