试题详情
简答题一个操作系统有20个进程,竞争使用30个同类资源,申请方式是逐个进行,一旦某个进程获得了它的全部资源,就马上归还所有的资源,每个进程最多使用30,最少使用一个资源。20个进程需要的资源总数小于50。如果仅考虑这类资源,系统会产生死锁吗?请说明理由。
  • 设max(i)表示第i个进程的最大资源需求量,
    need(i)表示第i个进程还需要的资源量,
    alloc(i)表示第i个进程已分配的资源量。
    由题中所给条件可知:
    max(1)+…+max(20)=(need(1)+…need(20))+(alloc(1)+…+alloc(20))<50
    如果在这个系统中发生了死锁,那么一方面30个资源R应该全部分配出去,即(反证法)alloc(1)+…+alloc(20)=30
    另一方面所有进程将陷入无限等待状态。
    由上述两式可得:need(1)+…+need(20)<20(关键)
    上式表示死锁发生后,20个进程还需要的资源量之和小于20,这意味着此刻至少存在一个进程i,need(i)=0,即它已获得了所需要的全部资源。既然该进程已获得了它所需要的全部资源,那么它就能执行完成并释放它占有的资源,这与前面的假设矛盾,从而证明在这个系统中不可能发生死锁。
  • 关注下方微信公众号,在线模考后查看

热门试题