一、死锁的产生
1、死锁的定义
所谓死锁是在多道程序中的一种现象,一组进程中的每一个进程均无限期地等待被该组进程中的另一个进程所占有且永远不会释放的资源。处于死锁状态的进程称为死锁进程。
系统发生死锁时,死锁进程的个数至少为两个;所有死锁进程都在等待资源,并且其中至少有两个进程已占有资源。
2、死锁产生的原因
死锁产生的原因主要有两个:一是竞争资源;二是多道程序运行时,进程推进顺序不合理。
(1) 资源的概念
一般把系统中的资源分成两类:一类是永久性资源(可重用资源),是指系统中可供进程重复使用、长期存在的资源;二是临时性资源(消耗性资源),是指由某个进程所产生、只为另一个进程使用一次或经过短暂时间后便不再使用的资源。
3、死锁产生的必要条件
(1) 死锁产生的四个必要条件
① 互斥条件
资源是独占的且排他使用,进程互斥使用资源。
② 不可剥夺条件
进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺。
③ 请求和保持条件
进程先申请它所需要的一部分资源,得到后再申请新的资源,在申请新资源的同时,继续占有已分配的资源。
④ 循环等待条件
又称环路等待。在发生死锁时,必然存在一个进程等待队列,形成一个进程等待环路,环路中每一个进程已占有的资源同时被另一个进程所申请。
(2) 解决死锁的四种方法
① 预防死锁
② 避免死锁
③ 检测与解除死锁
④