教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

操作系统课设-银行家算法(2)

来源:网络收集 时间:2026-08-22
导读: 五、源程序代码 #include #include #include #define M 10 //最大进程数 #define N 3 //系统所拥有的资源类型 int Max[M][N];//进程对各类资源的最大需求 int Allocation[M][N];//系统已为进程所分配的各类资源数 i

五、源程序代码

#include #include #include

#define M 10 //最大进程数

#define N 3 //系统所拥有的资源类型

int Max[M][N];//进程对各类资源的最大需求

int Allocation[M][N];//系统已为进程所分配的各类资源数 int Need[M][N];//运行进程尚需的各类资源数 int Work[N];//运行进程时系统所拥有的资源数

bool finish[M];//表示系统是否有足够的资源分配给进程 int Available[N];//系统可利用的资源数 int n_pro=0;//进程的数目

int flag[M]={-1};//用于标记安全序列

int Readfile();//从磁盘读文件

int Safe1(int flag[],int n,int t);//输出所有安全状态 void show();

int Safe();//判断系统是否处于安全状态 int Request();//请求资源分配函数

void show() {

printf(\ \\t%-9s\\t%-9s\\t%-9s\\n\ printf(\ \\tA B C\\tA B C\\tA B C\\n\ for(int i=0;i

printf(\系统可利用资源数:\\n\ printf(\ \\tA\\tB\\tC\\n\

printf(\}

int Readfile()//从磁盘读文件 {

int i=0,j=0;//i表进程,j表资源 ifstream inFile; //文件

inFile.open(\打开输入文件,按照规定的格式提取线程等信息 for(j=0;j

inFile >> Available[j]; inFile.get();

printf(\系统最大资源数:\\n\ printf(\ \\tA\\tB\\tC\\n\

printf(\ inFile >> n_pro; inFile.get();

printf(\当前进程的数目:%d\\n\ while(i> Max[i][j]; for(j=0;j> Allocation[i][j]; for(j=0;j

for(j=0;j

printf(\显示初始化资源分配表:\\n\ show(); printf(\ return 0; }

int Safe()//判断系统是否是安全的 {

int tempn=n_pro; int i=0,j=0,t=0;

for(i=0;i

// printf(\// printf(\ tp=(Work[0]>=Need[i][0]) && (Work[1]>=Need[i][1]) && (Work[2]>=Need[i][2]); if(tp) { finish[i]=true; for(int j=0;j

printf(\ break; } } } tempn--; }

for(i=0;i

{printf(\系统不安全,不存在安全序列\\n\ printf(\系统是安全的,存在安全序列:\\n\ for(j=0;j

int Safe1(int flag[],int n,int t) {

int p,i,j; //p为标记 int temp[N];//临时数组 for(i=0;i=Need[i][0]) && (Work[1]>=Need[i][1]) && (Work[2]>=Need[i][2]); if(tp) { for(j=0;j

p=1; } else continue; for(int j=0;j

for(j=0;j

return 0; }

int Request()//进程提出请求后,判断系统能否将资源分配给它 {

int rq;//下标 int Request[N];

printf(\请输入需要请求的进程号(0~4):\ scanf(\

printf(\请输入需要请求的资源数(A B C):\

scanf(\

if(Need[rq][0] < Request[0] || Need[rq][1] < Request[1] || Need[rq][2] < Request[2]) { printf(\进程p%d申请的资源大于它所需要的资源\\n分配不合理,不予分配\\n\\n\

return -1; }

if(Available[0] < Request[0] || Available[1] < Request[1] || Available[2]

for(int j=0;j

printf(\假定系统可为p%d分配,分配后的资源分配表:\\n\ show(); printf(\ for(j=0;j

return 0; }

int main() {

printf(\从磁盘读取源文件…\\n\ Readfile();

操作系统课设-银行家算法(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/404223.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)