产生死锁的原因
竞争共享资源且分配资源的顺序不当
死锁产生需要满足的条件(必须同时满足)
- 互斥条件。指一个进程在访问资源的过程中,其他进程不能访问该资源。
- 请求和保持条件。进程已经保持了一个资源,又提出了新的资源要求,而新请求的资源已经被其他进程占有,此时进程阻塞,但对已经获得的资源保持不放,使得其他进程无法使用被保持的资源。
- 不剥夺条件。进程已经获得的资源不能被剥夺,只能由进程自己释放。
- 环路等待条件。在发生死锁时,必须存在一个进程申请资源的环行链。
处理死锁的基本方法
死锁的预防
- 摒弃请求和保持条件
- 摒弃不剥夺条件
- 摒弃环路等待条件
死锁的避免
- 分为安全状态和不安全状态