关于检测模型, 我们可以这么假定, 锁为有向边, 申请锁的线程A为起点, 拥有锁的线程B为终点. 这样就形成线程A到线程B的一条有向边. 而众多的锁(边)和线程(点), 就构成了一个有向图.
...于是乎, 一个死锁检测的算法, 就转变为图论中有向图的环判断问题. 而该问题, 可以借助成熟的拓扑遍历算法轻易实现....当一个线程请求锁失败时,这个线程可以遍历锁的关系图看看是否有死锁发生
系统资源分配图(system resource-allocation graph) 二元组G=(V,E)
一个顶点的集合V和边的集合...E(图定义定点和边结合) V被分为两个部分
P={P1,P2,......,Rm},含有系统中全部的资源
申请边:有向边Pi->Rj,表示进程Pi申请了资源Rj的一个实例 (图的出度)
分配边:有向边Rj->Pi,表示资源Rj的一个实例分配给进程P (图的入读)
练习
Daily