问题
问答题
请写出一种检测进程死锁的方法和相应的结论(或定理)。
答案
参考答案:进程死锁的检测方法有多种,主要有利用化简进程后的资源有向图方式进行死锁的检测和采用矩阵表示法进行死锁检测两种方法。这里详细介绍利用化简进程后的资源有向图方式进行死锁的检测。
资源有向图方式可以检测出系统的某一状态S是否处于死锁状态,其化简方式如下。
(1) 从有向图中找出既不阻塞又非孤立的节点进程Pi。在顺利的情况下,Pi可以获得它所需的资源不断向前推进,直至运行完毕。然后释放它所占有的全部资源而处于潜在状态,这相当于在图上消去Pi所有的请求边和分配边,使之成为孤立节点。
(2) 进程Pi所释放的资源,可以唤醒某些因等待该资源而被阻塞的进程Pj,在顺利的情况下,Pj又可以获得它所需的资源继续推进,直至进行完毕,然后释放它所占有的全部资源,而处于潜伏状态。这相当于在图上消去了Pj所有的请求边和分配边,使之成为孤立的点。
(3) 在实施了上述的一系列化简步骤后,若消去所有的边,则该图是可完全化简的,不会发生死锁。
(4) 若有向图不能通过任何进程予以化简,则称该图是不可化简的,存在死锁。