题28

题目

Q:某系统有 个同类资源供 个进程共享,若每个进程最多申请 个资源 ,采用银行家算法分配资源,为保证系统不发生死锁,则各进程的最大需求量之和应 ( )。
A. 等于
B. 等于
C. 小于
D. 大于

分析

A:https://www.bilibili.com/video/BV1Sw4m1e7ha?t=9.1&p=16
先看是不是安全序列
如果不是安全序列,就不会分配资源
申请的资源一定是小于m的
这个解答阐述了一个更强的条件,它说的是只要所有进程申请的最大资源数之和不超过 m+n-1,就一定能找到安全序列,不会发生死锁。

  1. 银行家算法的核心目标是找到一个安全序列,安全序列是指一种分配资源的顺序,能够保证所有进程最终都能获得所需资源并完成。
  2. 考虑最极端的情况
    • n-1 个进程只需要 1 个资源。
    • 1 个进程需要 m 个资源 (所有资源)。
  3. 为什么这种极端情况下不会死锁?
    • 首先,系统可以先满足那 n-1 个只需要 1 个资源的进程,因为总共只需要 n-1 个资源,而系统拥有 m 个资源 ( m 通常大于等于 n )。
    • 当这 n-1 个进程完成后,它们会释放资源。
    • 这时,最后那个需要 m 个资源的进程就能够获得所有资源并完成。
  4. 结论:即使在最极端情况下,只要所有进程申请的资源总数不超过 m + n - 1,我们都能找到一个让所有进程完成的安全序列,所以不会发生死锁。

C
按照银行家算法,只要保证系统中进程申请的最大资源数小于或等于 ,就一定存在一个安全序列。
考虑最极端的情况,假如有 个进程都申请了 1 个资源,剩下一个进程申请了 个资源,则各进程的最大需求量之和为 ,此时能保证一定不会发生死锁。