动态分配算法演示程序(银行家算法)

动态分配算法演示程序(银行家算法)

一、各模块基本算法流程

1、整个银行家算法的思路。先对用户提出的请求进行合法性检查,再进行预分配,利用安全性检查算法进行安全性检查。
2、算法用到的主要数据结构和C语言说明。
(1)可利用资源向量avaliable[m][n],m为资源的类型。
(2)最大需求矩阵maxx[m][n],n为进程的数量。
(3)已分配矩阵allocation[m][n]
(4)需求矩阵need[m][n]
(5)申请各类资源数量request[m]
(6)工作向量work[m]
(7)、finish[n]表示系统是否有足够的资源分配给进程,0为否,非0为是
3、银行家算法(主程序)
(1)、系统初始化。输入进程数量,资源种类,各进程已分配、还需求各资源数量,各资源可用数量等。
(2)、输入用户的请求i,即第i个进程请求资源。
(3)、检查用户的请求是否小于还需求的数量,条件是request[j]<need[j]。如果条件不符则提示重新输入,即不允许索取大于需求量.
(4)、检查用户的请求是否小于系统中的可利用资源数量,条件是request[j]<avaliable[j]。如果条件不符则申请失败,阻塞该进程,重新进行进程动态资源申请。
(5)、进行资源的预分配,语句如下:
Allocation[j]+=request[j]
Need[p][j]-=request[j]
Avaliable[j]-=request[j]
3、安全性检查算法(safeCheck())
(1)、设置两个临时变量。Finish[i]记录进程模拟执行的结束状态,初值为0,如果可以模拟执行结束,则可设为1,也可设为其它非零值以表示执行的先后次序。Work[j]记录模拟执行中资源的回收情况,初值为available[j]的值。
(2)、在进程中查找符合以下条件的进程。条件1:finish[i]=0条件2:need[p][j]<work[j](3)、如果查找成功则进行资源的模拟回收,语句如下:
for (j = 0;j<m;j++)
work[j] += allocation[i][j];
或查找到的顺序号
(4)、如果查找不成功,则检查所有进程的Ffinish[i]=1,如果有一个为0,则系统不为0,返回不成功

二、流程图
在这里插入图片描述
三、代码
3、代码
(1)、初始化inint()
#include “stdafx.h”
#include<stdio.h>

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值