死锁特征
当两个或更多进程需要由其他进程持有的资源来完成它们的执行时,操作系统中会发生死锁。
如果满足以下四个Coffman条件,则会发生死锁。但这些条件并不是相互排斥的。具体如下:
互斥
应该有一些资源一次只能由一个进程持有。在下面的图表中,Resource 1只有一个实例,并且只由Process 1持有。
保持和等待
一个进程可以持有多个资源,同时还可以从其他正在持有这些资源的进程请求更多的资源。在以下给出的图表中,Process 2持有Resource 2和Resource 3,并且正在请求Process 1持有的Resource 1。
不可剥夺
资源不能被强制从进程中抢夺。进程只能自愿释放资源。在下面的图表中,Process 2无法从Process 1那里抢夺Resource 1。只有在Process 1自愿释放它完成执行后,它才会被释放。
循环等待
一个进程正在等待由第二个进程持有的资源,第二个进程正在等待由第三个进程持有的资源,以此类推,直到最后一个进程正在等待由第一个进程持有的资源。这形成了一个循环链。例如:Process 1被分配了Resource 2,并且正在请求Resource 1。同样,Process 2被分配了Resource 1,并且正在请求Resource 2。这形成了一个循环等待环。