您能否举例说明两个进程(进程A和进程B)之间的死锁情况,其中每个进程都需要访问资源文件A、文件B和文件C。请给出一个允许两个进程发生死锁的情况?
我该如何解决死锁情况?我该如何防止它的发生呢?预防的成本是多少?
由于缺乏经验,我想不出一个方案。
发布于 2019-07-24 20:19:37
以两个进程A和B为例。另外,当进程试图访问文件系统时,它需要获取资源锁,然后才能访问文件系统。当资源锁被进程获取时,其他任何进程都不能获取相同的资源锁,因此无法访问文件系统。此外,锁是由具有wait forever属性的信号量处理的,所以当一个进程试图获取一个锁但它不可用时,它将永远等待,而不会继续(处于挂起状态)。
进程A将访问文件系统A,它将获取该文件系统的锁,并对其执行操作。由于上下文切换,它脱离了上下文。
现在,进程B将访问文件系统B,它将获取该文件系统的锁,并对其执行操作。由于上下文切换,它脱离了上下文。
现在,进程A在没有释放文件系统A的锁的情况下,尝试获取文件系统B的锁。锁不可用,因此它将进入挂起状态,并且不会继续。
现在调度了进程B,该进程再次尝试获取文件系统A的锁,而不释放文件系统B的锁。锁不可用,因此它将进入挂起状态,并且不会继续。
因此,一个进程持有另一个进程继续运行所需的资源,因此两个进程现在都处于死锁状态。
https://stackoverflow.com/questions/57173897
复制相似问题