目录
一.死锁的概念
在生产者-消费者模型中可能出现的问题:
在该模型中,我们设置了两组信号量,一组用来表示可调用资源的个数,另一组用来保证进程互斥。如果我们将互斥信号量mutex和资源信号量empty,full按照图示顺序编写,就可能导致死锁的产生。
我们不妨设当前资源信号量为0,那么我就说执行生产者进程时,mutex变为0,empty变为-1,生产者进程阻塞;此时调用消费者进程,mutex变为-1,消费者进程也阻塞;这就是死锁的产生。
死锁的定义
:多个进程由于互相等待对方持有的资源而造成谁都无法继续执行的情况。
二.死锁产生的必要条件
(1)互斥条件
进程涉及的资源是非共享的,只能同时供一个进程使用。
(2)不可抢占条件
一个进程执行过程中不能抢占另一个进程所持有的资源
(3)请求保持条件
一个进程申请调用其他资源时依然会占有自己已经持有的资源
(4)环路条件
在资源分配图中存在一个环路,环路中每一个进程持有的资源同时被下一个进程所请求。