给定进程数、每个进程最大资源需求数以及总资源数,判断系统是否会发生死锁
记总进程数为 n,总资源数为 m,每个进程所需的最大资源数为 w。
如果 n * (w-1) <= m 则不会发生死锁,否则会发生死锁.
案例一:
具体来看,假如 n = 2,m = 3,w = 2,根据上述式子,该系统不会发生死锁。
在某一时刻,两个进程同时发出资源请求,且每个进程请求的个数为 w - 1,也就是 1 个资源,此时所有进程的都还缺少一个资源才能结束进程并释放自己的资源,考察目前已经消耗的资源数以及系统剩余的资源数,分别为 2 和 1,这时将这个剩余的资源分配给上述两个进程的任意一个,假如分配给进程 P1,该进程获得了所需的资源,于是释放它被分配的资源,此时系统资源总数为 2,这时,将这两个资源的其中 1 个资源分配给另一个正在等待的进程 P2,该进程得以释放,同时所有的进程都得到满足。
案例二:
再来看一个例子,假如 n = 3,m = 3,w = 2,根据上述式子,该系统可能会发生死锁。
在某一时刻,三个进程同时发出资源请求,每个进程请求资源个数为 w - 1,即 1 个资源,此时消耗的总资源数为 n * 1 = 3 * 1 = 3 个资源,剩余资源数为 m - 3 = 3 - 3 = 0,在这一时刻,所有进程都在等待,并且这种等待行为不会结束,因为没有一个进程会提前结束并释放出自己的资源供其他进程使用,即进入了死锁状态。
课后练习:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)