银行家算法(死锁避免)

目录

 死锁

银行家算法  

例:

  死锁检测     

死锁解除


 死锁

      计算机系统中有许多互斥的临界资源(如打印机)或者软件资源(如进程表,临界区),如果两个或多个进程同时争取一个资源,或者同时进入临界区必然会出现问题。所谓死锁,就是指两个以上的进程相互要求对方已经占有的资源导致无法运行的现象。

产生死锁的四个必要条件:

互斥条件

请求保持条件

不可剥夺条件

环路条件

银行家算法  

银行家算法对于进程发出的每一个系统可以满足的资源请求命令并检测,如果发现分配资源后系统进入不安全状态(系统能按照某种顺序对每个进程分配资源,直到达到最大需求,可使每个进程都顺序完成),则不分配;若分配后处于安全状态,则实施分配。

例:

 

  死锁检测     

  解决死锁的另一条途径是死锁检测,这种方法对资源分配不限制,允许死锁产生,但系统会定时地运行一个死锁检测程序,判断系统是否发生死锁,若检测有死锁,则设法加以解除。

死锁解除

资源剥夺法:从一些进程中强行剥夺足够数量的资源分配给死锁进程。

撤销进程法:根据某种策略逐个地撤销死锁进程,知道解除死锁。