1 什么是死锁?举例
概念:在一个进程集合中,每个进程都在等待由该集合中的另一个进程才能引发的事件而无限期的僵持下去的场面称为死锁。
举例:桥有AB两段,甲车从A到B,已车从B到A,当甲车在A上已车在B上时,发生死锁。
2 计算机系统中产生死锁的根本原因
资源有限且分配不当
3 发生死锁的4个必要条件
1互斥条件
临界资源在一段时间内只能由一个资源占有
2占有且等待条件
一个进程请求资源的得不到满足而等待时,不释放已占有资源
3不可抢占条件
一个进程所占有的资源在用完之前,其他进程不能强行抢夺该资源
4循环等待条件
存在一个循环等待链,比如P1等P2,P2等P3,P3等P1.
4 解决死锁的办法一般有哪三种?
死锁的预防、死锁的避免、死锁的监测和恢复
5 死锁预防的基本思想是什么
死锁的预防就是在运行之前,预先防止死锁的产生,主要是通过破坏产生死锁的 4 个必要条件中任何一个来实现的。
6 死锁避免的基本思想是什么
死锁的避免是在系统运行过程中注意避免死锁的发生,这就要求系统每当在进程申请资源时,都应根据一定的算法进行判断,仅当系统处于安全状态时才把资源分配给进程,使系统一直处于安全状态之中,从而避免死锁。
7 什么是进程的安全序列?何谓系统是安全的?
安全序列:针对当前分配状态来说,系统至少能够按照某种次序为每个进程分配资源(直至最大需求),并且使他们一次成功地执行完毕,这种进程序列就是安全序列。如果存在这样一个安全序列,则系统此时是安全的。
8 死锁预防的有效方法?
静态分配资源策略: 要求每一个进程在开始执行前就要申请它所需要的全部资源, 仅当系统能满足进程的资源申请要求时才把资源分配给进程, 该进程才能开始执行 (注意,所有并发执行的进程要求的资源总和不能超过系统拥有的资源数)。
按序分配资源策略:把系统中所有资源排一个顺序,对每一个资源给一个确定的编号,规定任何一个进程申请两个以上资源时总是先申请编号小的资源,后申请编号大的资源(或者先申请编号大的,后申请编号小的资源)。系统按进程对资源的申请顺序来分配资源。按序分配策略将阻止死锁 的第四个条件(循环等待条件)的出现。
9 死锁避免的著名算法?
银行家算法
简述:
假定一个银行家拥有资金,被 N 个客户共享。
银行家对客户提出下列约束条件是:
①每个客户必须预先说明自己所要求的最大资金量;
②每个客户每次提出部分资金量申请和获得分配;
③如果银行满足了客户对资金的最大需求量,那么,客户在资金运作后,应在有限时间内全部归还银行。
银行家算法是把操作系统比作银行家,操作系统管理的各种资源比作银行的周转资金,申请资源的进程比作向银行借款的客户。银行家占有有限的资金,他不可能满足所有客户的请求,但可以满足一部分客户的借款请求,等这些客户归还后,又可把这笔资金借给其它客户,其原则是不能使银行家的钱被借完,使资金无法周转。