n个进程共享m个资源得死锁问题证明

         n个进程共享M个资源,每个进程一次只能申请/释放一个资源,每个进程最多需要M个资源,所有进程总共的资源需求少于M+N个,证明该系统此时不会产生死锁。
答:设max (i)表示第i个进程的最大资源需求量,need(i)表示第i个进程还需要的资源量,alloc(i)表示第i个进程已分配的资源量。由题中所给条件可知:
      max(1)+┅+max(n)=(need(1)+┅+need(n))+((alloc(1)+┅+alloc(n))<m+n
如果在这个系统中发生了死锁,那么一方面m个资源应该全部分配出去,
      alloc(1)+ ┅+alloc(n)=m
另一方面所有进程将陷入无限等待状态。可以推出
      need(1)+ ┅+need(n)<n
上式表示死锁发生后,n个进程还需要的资源量之和小于n,这意味着此刻至少存在一个进程i,need(i)=0,即它已获得了所需要的全部资源。既然该进程已获得了它所需要的全部资源,那么它就能执行完成并释放它占有的资源,这与前面的假设矛盾,从而证明在这个系统中不可能发生死锁。

评论

  1. 没有啊,偶尔看看专业课的书

    回复删除
  2. 2. 3个进程共享4个同类资源,每个进程最大需要2个资源,请问该系统是否会因为竞争该资源而死锁
    这个怎么证明啊?

    回复删除
  3. 不会死锁。
    即使每一个进程都需要2个资源,3个进程每一个首先分到一个资源是最坏的情况,那么还有一个资源剩余。这样,就不会死锁了。
    可以用银行家算法证明吧。

    回复删除

发表评论

此博客中的热门博文

Linux/ARM Page Table Entry 属性设置分析

提交了30次才AC ---【附】POJ 2488解题报告

笔记