一、什么是死锁?
死锁是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待的现象
二、产生死锁的原因
● 系统资源的竞争
通常系统中拥有的不可剥夺资源,其数量不足以满足多个进程运行的需要,使得进程在 运行过程中,会因争夺资源而陷入僵局,如磁带机、打印机等。只有对不可剥夺资源的竞争 才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。
● 进程推进顺序非法
进程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁。例如,并发进程 P1、P2分别保持了资源R1、R2,而进程P1申请资源R2,进程P2申请资源R1时,两者都 会因为所需资源被占用而阻塞
三、产生死锁的四个必要条件
● 互斥条件(Mutual exclusion)
资源不能被共享,只能由一个进程使用。
● 请求与保持条件(Hold and wait)
进程已获得了一些资源,但因请求其它资源被阻