银行家算法,顾名思义,起初就是为银行借贷时使用的,银行要贷款给客户,就需要考量自己的流动资金数量,如果这个资金数量可以满足客户的需要,则贷款给客户,如果无法满足( 资金数量不足)即可先行回收之前已经借贷出的即将到期的款项,回收后若能满足需求,则可和该借贷者约定一个期限,在期限内就可借贷给客户。
在操作系统中,CPU资源就是资金,各个进程就是客户,CPU资源要尽可能的满足各个进程的需求。
此外,通过银行家算法可以有效的避免死锁:“在分配资源给进程时检验是否安全
” 由此避免了不安全状态的存在,死锁是在不安全的情况下产生的,但是不安全状态,不一定会造成死锁,因此,避免了不安全状态,就可以有效的避免死锁了。
简单来说,银行家算法,共分为两步
一、尝试合理分配
合理分配,就是根据各个进程的需求,尽可能地合理地分配资源给各个进程,但是这个是试分配,并非真正分配给进程。
二、检查安全否
在这里提到一个名词“安全”,
安全就是指系统能够找到一个进程执行序列,是系统只要按照此序列为每个进程分配资源,就可以保证进程的资源分配和执行顺利完成,不会发生死锁,这就是系统的安全状态。
- 安全序列就是一个进程序列1-n,该进程序列,在使用资源时,