进程死锁(银行家算法)

1、死锁在计算机系统中有许多互斥资源(如打印机)或软件资源(如临界区),若两个进程同时使用打印机,或者同时进入临界区必然会出现问题。所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。

2、死锁产生的必要条件:

(1)互斥条件:即一个资源每次只能被一个进程使用,在操作系统中这是真实存在的情况。

(2)保持和等待条件:有一个进程已获得了一些资源,但因请求其他资源被阻塞时,对已获得的资源保持不放。

(3)不剥夺条件:有些系统资源是不可剥夺的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。

(4)环路等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。

3、死锁预防:死锁预防是采用某种策略,限制并发进程对资源的请求,破坏死锁产生的4个必要条件之一,使系统在任何时刻都不满足死锁的必要条件。

(1)预先静态分配法。破坏了“不可剥夺条件”。预先分配所需资源,保证不等待资源。该方法的问题是降低了对资源的请求,降低进程的并发程度;有时可能无法预先知道所需资源。

(2)资源有序分配法。破坏了“环路条件”。把资源分类按顺序。保证不形成环路。该方法存在的问题是限制进程对资源的请求;由于资源的排序占用系统开销。

4、死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,典型算法是“银行家算法”。但这种算法会增加系统的开销。

5、死锁检测判断系统是否处于死锁状态,如果是,则执行死锁解除策略。

6、死锁解除:与死锁检测结合使用,它使用的方式就是剥夺。即将资源强行分配给别的进程。

 

银行家算法:

例题:某系统有四种互斥资源R1,R2,R3和R4,可用资源数分别是3、5、6和8。假设在T0时刻有P1、P2、P3和P4四个进程,并且这些进程对资源的最大需求量和已分配资源数如下表所示,那么在T0时刻系统中R1、R2、R3和R4的剩余资源数分别为(1)。如果从T0时刻开始进程按   (2)     顺序逐个调度执行,那么系统状态是安全的。 

(1)A.3、5、6和8          B.3、4、2和2

           C.0、1、2和1          D.0、1、0和1

(2)A.P1P2→P4→P3      B.P2P1→P4→P3

     C.P3P2→P1→P4      D.P4P2→P3→P1

 

①求剩余资源数

用可用资源数减去那些已分配的资源数:

 

 R1=3-(1+0+1+1)=3-3=0

 R2=5-(1+1+1+1)=5-4=1

 R3=6-(2+2+1+1)=6-6=0

 R4=8-(4+2+0+1)=8-7=1

 

所以(1)选择D。

 

②求出还需资源数

分析,因为剩余的可用资源为(0,1,0,1),与上面的还需资源数比较,只有满足P3的还需资源数,所以,淘汰了ABD,选择C。

验证C.P3P2→P1→P4

你可能感兴趣的:(进程死锁(银行家算法))