首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >死锁场景示例?

问死锁场景示例?
EN

Stack Overflow用户
提问于 2019-07-24 08:55:19
回答 1查看 2K关注 0票数 1

您能否举例说明两个进程(进程A和进程B)之间的死锁情况,其中每个进程都需要访问资源文件A、文件B和文件C。请给出一个允许两个进程发生死锁的情况?

我该如何解决死锁情况?我该如何防止它的发生呢?预防的成本是多少?

由于缺乏经验,我想不出一个方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-24 20:19:37

以两个进程A和B为例。另外,当进程试图访问文件系统时,它需要获取资源锁,然后才能访问文件系统。当资源锁被进程获取时,其他任何进程都不能获取相同的资源锁,因此无法访问文件系统。此外,锁是由具有wait forever属性的信号量处理的,所以当一个进程试图获取一个锁但它不可用时,它将永远等待,而不会继续(处于挂起状态)。

进程A将访问文件系统A,它将获取该文件系统的锁,并对其执行操作。由于上下文切换,它脱离了上下文。

现在,进程B将访问文件系统B,它将获取该文件系统的锁,并对其执行操作。由于上下文切换,它脱离了上下文。

现在,进程A在没有释放文件系统A的锁的情况下,尝试获取文件系统B的锁。锁不可用,因此它将进入挂起状态,并且不会继续。

现在调度了进程B,该进程再次尝试获取文件系统A的锁,而不释放文件系统B的锁。锁不可用,因此它将进入挂起状态,并且不会继续。

因此,一个进程持有另一个进程继续运行所需的资源,因此两个进程现在都处于死锁状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57173897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档