银行家算法
死锁避免的实现之一。在资源分配前,寻找一个进程执行的安全序列,旨在描述系统资源满足各个进程的所需,使每个进程都能够顺序完成,并让系统处于安全态。
——————————————
引入表示单位
Avialiable(Av) Allocation(Al) Need Max.
各个表示意思:
Av 表示系统现存的某类资源数量
Al 表示某个进程已经分配得的某类资源数Need 表示某个进程尚还需某类资源数量
Max 表示某进程所需某类资源的最大数。——————————————
实现
根据已知或间接得知的Av 和Al Max Need进行资源分配,必须是安全序列,即Av资源够用。
1、根据Need和Av的比较判断各个进程的所需是否会得到满足,
2、若存在一个Q进程得到满足,执行3;若不存在,则因系统资源不足,进程所需请求得不到满足,而等待,待到资源足够再进行。
3、待到Q进程结束,释放资源,这时Av =Av+Al;
4、回到第一步,进行下一个进程的执行,直到全部结束,当然若中间出现资源不足情况,则上报没有安全序列。
——————————————
对于没有进程请求的序列,当处于不安全序列时,不能直截了当的得出死锁,因为只有中断请求提出后,全部进程都处于阻塞态时才会出现死锁;
对于死锁避免,不能检测是否死锁,只能得出安全序列,而安全了就不会死锁。安全态下不会出现死锁,因为每个进程的资源所需都能够获得满足。