面试中死锁的考点总结(死锁的定义、产生原因、四个必要条件、如何预防)

死锁

死锁定义:死锁指多个进程因竞争资源而造成的一种互相等待的僵局,若无外力作用,这些线程都无法向前推进,就造成了死锁。

产生原因:1、竞争资源 2、进程请求和释放资源的顺序不当,导致死锁

死锁产生的必要条件
1、互斥条件:一个资源同一时间只能被一个线程访问,若其他进程请求该资源,则只能等待
在这里插入图片描述

2、不可剥夺条件:进程获得资源在未使用完之前,不能被其他线程强行夺走,只能由获得该资源的进程来释放
在这里插入图片描述

3、请求与保持条件:进程已经保持了至少一个资源,但是又提出了新的资源请求,如果新资源已被占有,这只能进行等待,但对自己以占有的资源保持不释放
在这里插入图片描述

4、循环等待条件:若干个进程间形成了收尾相接循环等待资源的情况
在这里插入图片描述

死锁的预防----破坏死锁产生的必要条件从而预防死锁(主要是避免3和4两个条件的产生)
1、破坏互斥条件:把只能互斥使用的资源改成允许共享使用的资源,例如spooLing技术,将独占设备在逻辑上改造成共享设备
2、破坏不可剥夺条件:当某个进程请求新资源无法得到满足时,就立即释放保持的所有资源,待以后需要再重新申请
3、破坏请求和保持条件:采用静态分配方法,即进程在运行前一次申请完它所需要的的资源,在它资源未满足前,不让他运行,一旦运行,这些资源都归它所有,此时不会在请求其他资源
4、破坏循环等待条件:采用顺序资源分配法,首先给系统中的资源进行编号,规定进程必须按编号递增的顺序请求资源。例如一个进程只有已占有小编号资源时,才可以申请更大编号的资源

著名银行家算法是利用了第四种方法避免死锁

猜你喜欢

转载自blog.csdn.net/qq_44443986/article/details/115349328