有关在Petri网的系统中处理死锁方法,当前研究领域一般可分为四个大类:死锁预防、死锁避免、死锁的检测和恢复、综合法。
死锁预防是一种提前规避死锁的方法。死锁预防的目的是为一个系统设计Petri网模型,这个Petri网模型本身是活的,永远不会发生死锁。死锁预防从逻辑上就确保Petri网模型中不存在死锁,无论系统怎么变化,死锁都不会出现,所以不需要控制系统中进程对资源的请求。它的大体思路是控制系统的初始状态,尽管有可能存在死锁问题,但会存在控制器来控制系统避开死锁标识,使Petri网模型不会进入死锁区,所以系统从根本上就杜绝了死锁[2]。这种方法从系统整体的角度看不存在任何死锁,只需要静态的分配某些资源。它虽然从一开始就扼杀了死锁,但策略趋于保守,在某种程度上会影响系统的运行效率和降低资源的利用率。78603
死锁避免方法大体分为2类。一类是Petri网模型通过对资源的控制来达到死锁避免的目的。它的大体思路是,如果系统允许一个资源请之后求会导致死锁,那么就否定该请求,不向该请求分配资源。在Petri网模型中,这种方法其实是选择性的控制一些已经使能的变迁的发射,这样就避免出现系统的死锁。另一类避免死锁的策略是改变Petri网结构,使系统不会产生死锁。具体做法是,为Petri网中的每个极小信标增加一个控制库所,这个控制库所能够保证所有的信标都不会被清除。这种方法的缺陷是使系统结构变得非常复杂。论文网
死锁的检测和恢复方法是指不用十分在意系统是否会进入死锁区,在系统运行过程中检测死锁是否已经发生,如果检测到一个死锁,则需要立即解除死锁,恢复系统的正常运行状态。这种方法通常具有较高的资源利用率,但对控制器的设计需要很高的要求。另外还要考虑一些另外的设备来解除死锁,这又会增加系统额外的负担。
综合法针对一些特定的Petri网。大体上是针对某些特殊Petri网的特性,选用特定的控制器来解除死锁。它的优势是比较简便,但是它的应用范围很小。
本文主要涉及死锁预防的研究。在初始Petri网模型中增加一个最大许可且结构最小的控制器,使系统不会进入死锁区。