在进程资源有向图中,圆圈表示进程,方框表示资源,方框内的小圆数表示资源数。当有向边(或称请求边)由进程指向资源时,表示申请一个资源;当有向边(或称分配边)由资源指向进程时,表示获得一个资源。假设系统中有三个进程P1、P2和P3,两种资源R1、R2,且R1的资源数等于3,R2的资源数等于3。如果进程资源图如图(a)和图(b)所示,那么图(a)中(P1、P2、P3 都是阻塞节点,该图不可以化简,是死锁的);图(b)中(P3 是非阻塞节点,P1, P2 是阻塞节点,该图可以化简,是非死锁的) 。

进程资源有向图中,圆圈代表进程,方框代表资源,方框内的小圆代表资源实例数量;从进程指向资源的有向边是请求边,代表进程申请1个对应资源,从资源指向进程的有向边是分配边,代表进程已获得1个对应资源。判断系统是否死锁可采用化简法:首先判断进程是否为阻塞节点,若进程的资源申请无法被系统当前剩余的对应资源实例满足,该进程即为阻塞节点;若进程占有资源且无资源申请,或资源申请能被剩余资源满足,则为非阻塞节点。若系统中所有进程均为阻塞节点,没有进程能继续执行并释放占有的资源,进程资源图无法化简,则系统处于死锁状态。若存在非阻塞节点,可先让该进程执行完毕,释放其占有的全部资源,再用释放的资源尝试满足其他进程的资源申请,重复此过程,若最终所有进程都能完成执行,则系统无死锁。实际场景中,资源实例的剩余量直接影响进程申请的满足情况,无资源申请的进程是解锁的关键,其释放的资源可逐步解除其他进程的阻塞状态。
本题考查资源分配图的化简与死锁判定。判断时要先看当前剩余资源能否满足某个进程尚未获得的请求;若能,该进程可执行完毕并释放已占资源,相应结点和边就可以消去。图(a)中,P1、P2、P3 的未满足请求都无法由当前剩余的 R1、R2 资源满足,因此三个进程都是阻塞结点,找不到可先完成并释放资源的进程,资源分配图不能继续化简。这说明系统已经形成死锁。因此,选项 A 正确。
