第一种类型:资源分配图
首先这是一个资源分配图。P是一个进程而R是一个资源。简单易懂的来说死锁的出现就是两个进程同时申请了一个资源导致资源不知道如何分配。箭头由进程指向资源则是请求资源,而当箭头由资源指向进程时为释放资源。
根据a图可以得到每个资源都只有一个进程申请因此不处于死锁状态。
根据b图来看P1和P2同时申请了R2资源因此处于了死锁状态.
第二种:OR(等待图)模型下的死锁问题
在使用AND条件的系统中,死锁条件是在等待图中存在回路。但是在使用OR条件的系统中,等待图中的回路未必会引发死锁。在使用OR条件的系统中,死锁条件是存在结(knot)。一个结K是一个节点集合,对于K中的任何节点a,a能到达K中的所有节点,并且只能到达K中的节点。
回路的通俗来说其实就是箭头围成了一个圈:
但是有回路不一定死锁但是死锁了一定有回路
由等待图的死锁条件可以判断出当两个圆圈同时指向一个圆圈的时候就会发生死锁
因此两个等待图都处于死锁状态
第三种类型:将资源等待图转换成等待图时的死锁问题:
a图转化成等待图变成:
明显未构成回路所以一定未处于死锁状态
同理可得知图b也处于死锁状态.