镜子i
2020-12-31 15:27
采纳率: 100%
浏览 42

操作系统(线程的死锁问题)

某系统中有三个并发进程,都需要同类资源三个,试问不会发生死锁的最少资源数是( )?

A.6个
B.7个
C.8个
D.9个

正确答案是B.7个,对于这一题我拥有个疑问,解析时候假设三个线程得到的资源数都是2个!那么3个线程所需资源数为1 就是7个.为何这里不可以将资源分为1,1,2个资源

 

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 旧时光~ 2020-12-31 16:33
    已采纳

    你说的这种情况 1 1 2 然后第三个线程首先申请最后一个资源他才不会死锁 但是如果是前两个线程申请他就会死锁 这个题问的是 不会发生死锁的最少资源数 所以是无论怎么分配都不会死锁的最少资源数

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • SoftwareTeacher 2020-12-31 15:51

    >为何这里不可以将资源分为1,1,2个资源

    没理解你的意思。

    7 个资源, 可以用( 2, 2, 3) 的方式分给 3 个进程,那么必然有一个进程满足了需求,然后会释放资源,让别的进程使用,而不会死锁。

    评论
    解决 无用
    打赏 举报
  • 旧时光~ 2020-12-31 15:56

    最坏的死锁情况 每个进程都已经获取到了两个资源 去申请第三个资源而死锁 如果再多一个的话 三个进程终会有一个得到所需所有资源执行然后释放 所以最少就是 2*3+1

    评论
    解决 无用
    打赏 举报
  • 镜子i 2020-12-31 15:56

    三个并发线程的同时执行,对于每个线程的资源的分配必须要是平均的吗,我是这个意思

     

    评论
    解决 无用
    打赏 举报
  • SoftwareTeacher 2020-12-31 16:06

    不一定要平均, 但是能保证不会发生死锁的最小资源数是 7 (2, 2, 3)。 少于这个数,都会发生死锁。 

    评论
    解决 无用
    打赏 举报
  • 镜子i 2020-12-31 16:10

    那如果总资源是五个,三个线程分配为1,1,2,那么剩余资源1个,将剩下的一个资源分配给持有2个资源的进程,待完成进程完成以后回收资源,那么剩下两个进程不是也同样可以执行完成吗,所以在这个地方就有些迷惑

     

    评论
    解决 无用
    打赏 举报
  • 镜子i 2020-12-31 17:15

    多谢大佬指点

     

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题