文章目录
死锁产生的条件:
- 互斥
- Hoid and Wait
- 非剥夺
- 环路等待
预防死锁
- 间接方法:禁止前三个条件之一的发生;
1、互斥:是某些系统资源的固有属性,不可禁止;
2、Wait and Hold:要求进程一次性的申请其所需要的全部资源。若系统中没有足够的资源可分配给它,则进程阻塞;且不说对于用户来说方便与否,单纯考虑一个资源一次性拿到所有资源的可能性?效率太低,可以实现,但是没必要;
3、不剥夺条件:若一个进程占用了某些系统资源,又申请了新的资源,则不能立即分配给它。必须让它首先释放出已有资源,然后再重新申请,与上个条件相同,不适用;若一个进程申请的资源被另一进程占用,OS可以剥夺低优先权的资源分配给高优先权的进程(要求此类可剥夺资源的状态易于保存和回复,否则不能剥夺); - 直接方法:禁止条件4(环路等待)的发生
即禁止”环路等待“条件:可以将系统的所有资源按类型不同进行先行排队,并赋予不同的序号。进程对某类资源的申请只能按照序号递增的当时进行;
显然,此方法是低效的,它将影响进程的执行速度,甚至阻碍资源的正常分配;