死锁产生原因:
1、系统资源不足。
2、进程运行推进的顺序不合适。
3、资源分配不当。
产生死锁的充分必要条件:
1.互斥条件:一个资源每次只能被一个进程使用
2.请求与保持条件:一个进程因请求资源而阻塞时,对已占有的资源保持不放。
3.不剥夺条件:进程一旦独占访问资源,在未使用完之前,不能强行剥夺。
4.环路等待条件:若干进程之间形成一种头尾相连的环路资源等待关系。
处理死锁
1忽略死锁
2.检测死锁
3.预防死锁
4避免死锁。避免死锁与预防死锁的区别在于结构是否有使死锁发生的可能性。如有我们设计系统以便死锁不可能出现,那么就是预防死锁。如果对系统编码,以便系统能检测到什么时候死锁发生,那么就是是避免死锁。经典算法,银行家算法。