死锁场景示例?

时间:2019-07-24 00:55:18

标签: operating-system deadlock

您能举两个进程(进程A和进程B)之间的死锁方案的示例吗,其中每个进程都需要访问文件A,文件B和文件C的资源。提出一个方案,该方案允许两个进程成为陷入僵局?

我将如何解决死锁情况? 我如何防止它发生? 预防的费用是多少?

由于缺乏经验,我无法想到一种情况。

1 个答案:

答案 0 :(得分:1)

采用两个进程A和B。另外,当进程尝试访问文件系统时,请遵循一般准则,它需要获取资源锁,然后访问文件系统。当某个进程获取资源锁时,其他任何进程都无法获取相同的资源锁,因此无法访问文件系统。另外,这些锁由具有“永远等待”属性的信号量处理,因此,当进程尝试获取锁且该锁不可用时,它将在该点永远等待,而不会继续(处于挂起状态)。

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

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

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

现在调度了进程B,该进程B又一次没有释放对文件系统B的锁定,而是尝试获取对文件系统A的锁定。该锁定不可用,因此它将进入待处理状态,并且不会进一步进行

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