操作系统——银行家算法
看到一篇非常好的银行家算法解析文章,感谢博主 原文链接: https://www.cnblogs.com/adamjwh/p/8232811.html 对于计算机中的死锁,我们有四种处理的方法,分别为预防死锁、避免死锁、检测死锁和解除死锁,而今天要说的Dijkstra的银行家算法就是最具有代表性的避免死锁的算法。 银行家算法的名字来源于该算法原本是为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况,在OS中可以用它来避免死锁。 为实现银行家算法,每一个新进程在进入系统时,必须申明在运行过程中可能需要每种资源类型的最大单元数目,其数目不应超过系统所拥有的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程。若有,再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态。如果不会,才将资源分配给它,否则让进程等待。 首先为实现银行家算法,在系统中必须设置这样四个数据结构: (1) 可利用资源向量Avaliable。 这是一个含有m个元素的数组,其中每一个元素代表一类可利用的资源数目,其初始值是系统所配置的该类全部可用资源的数目,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态的改变。如果Available[j]=K