考研吧 关注:5,550,616贴子:41,355,050
  • 11回复贴,共1

请问有没有学操作系统的大手子,想了快2个小时了

只看楼主收藏回复

如图


IP属地:重庆来自iPhone客户端1楼2024-08-14 00:19回复
    假设每个进程都需要k个资源,即最大需求数量为nk,且都已经分配了k-1个资源,那么已分配的资源数总数为n*(k-1),此时只要有一个额外资源即可满足不死锁,资源数m≥n*(k-1)+1,化解整理得nk≤m+n-1


    IP属地:广东来自Android客户端2楼2024-08-14 01:05
    收起回复
      题目要求保证不发生死锁,你举的例子都有可能发生死锁(当n>m时)


      IP属地:江西来自Android客户端3楼2024-08-14 01:17
      收起回复
        m,1111111是因为你在分配过程中必须保证有安全队列的出现,为什么说他是最极端的情况,假设现在有个进程需要k个资源,但是分配的只有a个,而且剩下的资源量不足以他满足,那么你其他进程必须得至少有一个在获得目前还可使用的资源后可以被满足,并且递推下去是安全队列,那最少需要的资源量当然是1,他获得1后就满足,并将自己的资源释放出来,来满足其他的进程要求,那么依次类推,除了这个需要k-a个资源的,剩下都是需要1个的情况下最极端,所以是其他n-1个都是1,最后一个为m,如果你都是m,假设我已经分配给了这个进程1个资源,有分配给了其他进程1个,立马就死锁了


        IP属地:江苏来自Android客户端4楼2024-08-14 01:18
        收起回复
          m和n的大小是未知的,但m肯定大于等于1
          它这里极端情况就是m很小,n巨大(如m=2,n=1000),前面n-1个进程不要多申请了,你申请两个我系统可能处于不安全状态,根据银行家算法就不会通过你的申请给你分配资源了;
          所以前n-1个进程最多只能是都申请1个(根据银行家算法,给你一个你用完还回来必是安全的,如m=1这种极端情况);对最近一个进程,前面的m个进程都回收回来了,那它的可申请资源就是可以是最大值,即m
          综上,加在一起就是m+n-1<m+n


          IP属地:河北来自Android客户端5楼2024-08-14 01:27
          回复
            我认为题目表达有问题,不发生死锁是银行家算法保证的,不是通过最大需求量限制的。
            即便每个进程需求量都是m,算法也可以通过只给一个进程分配资源找到一个安全序列。
            m+n-1这个值的意义是,总最大需求量为m+n-1时,无论如何分配剩下的资源都不会出现死锁。


            IP属地:广东来自iPhone客户端6楼2024-08-14 02:11
            回复
              不知道为什么现在还把银行家算法当作考点,这个东西现实中根本没法实现,我没见过哪个系统有用这个的。


              IP属地:上海来自iPhone客户端7楼2024-08-14 08:51
              回复
                直接想最坏的情况就行,每个资源都已经分配了k-1个资源,都差最后一个资源就可以解除死锁状态了,n*(k-1)+1(这个1是避免死锁的关键)≤m,化简一下就是答案


                IP属地:湖北来自Android客户端8楼2024-08-14 10:43
                回复