镜子i 2020-12-31 15:27 采纳率: 33.3%
浏览 54
已采纳

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

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

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
    关注

    多谢大佬指点

     

    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 MICE包多重插补后数据集汇总导出
  • ¥15 一道算法分析问题(关于3-MSAT)
  • ¥15 C++ FLUENT 化学反应速率 编写困难
  • ¥15 Python嵌套交叉验证
  • ¥15 linuxkit+elasticsearch
  • ¥15 兄得萌6.13do题😭😭大一小东西的work
  • ¥15 投不到原始数据,gdal投影代码
  • ¥20 卷积混响的代码帮写。。
  • ¥88 借助代码处理雷达影像,识别任意区域洪水前后的被淹没区域,并可视化展示。
  • ¥100 提问关于声学两个频率合成后主观听觉问题