现在的位置: 首页 > 综合 > 正文

银行家算法(2):用JAVA实现算法过程

2013年12月13日 ⁄ 综合 ⁄ 共 3798字 ⁄ 字号 评论关闭

《操作系统》课程的作业要求用代码去实现银行家算法的过程,参考了一下网上的用C++实现的过程,然后用JAVA实现银行家分配资源的过程。代码如下:


 

运行如下:




 

最后讨论下银行家算法( banker's algorithm )的关键处理点,算法由 Dijkstra(1965)提出,将死锁的问题演示为一个银行家贷款的模型。一个银行家向一群客户发放信用卡,每个客户有不同的信用额度。每个客户可以提出信用额度内的任意额度的请求,直到额度用完后再一次性还款。银行家承诺每个客户最终都能获得自己需要的额度。所谓“最终”,是说银行家可以先挂起某个额度请求较大的客户的请求,优先满足小额度的请求,等小额度的请求还款后,再处理挂起的请求。这样,资金能够永远流通。


所以银行家算法其核心是:保证银行家系统的资源数至少不小于一个客户的所需要的资源数。在安全性检查函数chkerr()上由:


  

这个循环来进行核心判断,从而完成了银行家算法的安全性检查工作。


2010-10-30 13:39:37 http://blog.csdn.net/libenqing

 

 

抱歉!评论已关闭.