基于Java实现的银行家算法

Feelme

发布日期: 2020-12-01 10:34:16 浏览量: 205
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

因为Java是面向对象的,所以设置了两个资源类:

  • Resource:分别描述三种资源的数目

  • Progress:描述每个进程信息,包括每个进程的最大需求资源数目、已分配资源数目

具体算法过程:

  • 检测当前时刻系统是否处在安全状态:就是检测当前时刻系统能否找到一个安全序列,显示在“当前系统的状态框中”

  • 输入某个进程的请求,检测是否分配该请求:

    • 预分配:如果满足请求资源小于可用资源数目,请求资源小于所需资源数目,系统假设将资源分配给该请求
    • 检测安全序列:如果能找到安全序列,系统正式分配该请求,否则,系统将回滚到请求资源前的状态

所以,这里面最关键的算法是找到安全序列。

检测安全序列:

  • 构建一个Finish[5] ={false,false,false,false,false}数组,每个位置对应每个进程。work = available

  • 找到一个进程为FALSE且need 小于等于 work的进程

  • 将资源分配给该进程,该进程得到资源运行完成后,释放掉所有已分配给该进程的资源,即work = work + allocation。并将该进程设置为TRUE

  • 继续寻找下一个符合条件的进程,知道所有进程都被设置为TRUE

上传的附件 cloud_download 基于Java实现的银行家算法.7z ( 29.58kb, 5次下载 )
error_outline 下载需要7点积分

发送私信

去奋斗,去追求,去发现,但不要放弃

14
文章数
15
评论数
eject