死锁根本原因
产生原因,根本原因是资源有限且分配不当。
具体归结为两点:
竞争资源
进程推进顺序不当
资源数量不够不一定造成死锁,还需要有顺序不合理的条件。
产生死锁的必要条件(coffman条件)
- 互斥条件。某个资源在一段时间内只能供一个进程占用。
- 占有且等待条件。进程在占有至少一个资源的同时,又去申请别的资源,陷入等待。
- 不可剥夺条件。一个进程所占有的不可剥夺的资源在它使用完之前,系统不能剥夺。
- 循环等待条件。若干进程之间的等待、请求关系成环。
处理死锁的基本方法
- 预防死锁。预先设置一些限制性条件,以破坏产生死锁必要条件中的一个或几个。方法容易实现,但是由于限制了系统资源的分配和使用,造成资源利用率较低。
- 避免死锁。在资源分配的过程中,用某种方法防止系统进入不安全状态(在银行家算法中,存在安全序列)。用此方法可以获得较高的资源利用率和系统吞吐量。
- 检测和解除死锁。不干涉,允许系统产生死锁。它设置一个死锁检测机构(资源分配图),用来检测和解除死锁。方法所获得的利用率吞吐量是最高的,但难以实现。
预防死锁的具体方法
- 破坏占有且等待条件。
思路一:静态分配资源。进程开始执行前就申请全部所需资源ÿ