- 18
- 0
- 约5.94千字
- 约 10页
- 2019-02-21 发布于广东
- 举报
西南大学《操作系统原理》实验报告
PAGE1 / NUMPAGES10
实验三 银行家算法
班级: xxxxxxxxxxxxxx 姓名: xxxx
学号: xxxxxxxxxxxxxxxxxxxxxxxxx
上级日期: 2018年10月
成绩:___________________________
实验目的:
银行家算法是避免死锁的一种重要方法,通过一个简单的银行家算法程序加深了解有关资源申请,避免死锁等概念,并体会和了解死锁以及避免死锁的具体实施方法。
二、实验内容
1、程序流程图
系统主要运行过程流程图
银行家算法流程图
安全性算法流程图
2、程序源码
//#define??M???5??
//#define??N???3??
#include?stdio.h????//本实验中使用到的库函数??
#include?stdlib.h??
#include?string.h??
int?max[5][1];????????//开始定义银行家算法中需要用到的数据??
int?allocation[5][1];??
int?need[5][1];??
int?available[1];??
int?request[5][1];??
char?*finish[5];??
int?safe[5];??
int?n,i,m;??
int?k=0;??
int?j=0;??
int?work[1];??
int?works[5][1];??
??
void?line()?????//美化程序,使程序运行时更加明朗美观??
{??
????printf(\n);??
}??
void?start()???//表示银行家算法开始??
{??
????line();??
????printf(?????????????????????????银行家算法开始\n);??
????printf(???????????????????????????????????--??死锁避免方法??\n);??
????line();??
}??
void?end()?????//表示银行家算法结束??
{??
????line();??
????printf(?????????????????????银行家算法结束,谢谢使用\n);??
????line();??
}??
void?input()??//输入银行家算法起始各项数据??
{??
????????for?(n=0;n5;n++)??
????????{??
????????????printf(请输入进程P%d的相关信息:\n,n);??
????????????printf(Max:);??
????????????for?(m=0;m1;m++)??
????????????????scanf(%d,max[n][m]);??
????????????printf(Allocation:);??
????????????for?(m=0;m1;m++)??
????????????????scanf(%d,allocation[n][m]);??
????????????for?(m=0;m1;m++)??
????????????????need[n][m]=max[n][m]-allocation[n][m];??
????????}??
????printf(请输入系统可利用资源数Available:);??
????for?(m=0;m1;m++)??
????????scanf(%d,available[m]);??
}??
void?output()??//输出系统现有资源情况??
{??
????line();??
????printf(资源情况????Max?????Allocation????Need??????Available\n);??
????printf(进程????????A?????????A???????????A??????????A??\n);??
????line();??
????for(n=0;n5;n++)??
????{??
????????printf(P%d%3d%3d%3d,n,max[n][0],allocation[n][0],need[n][0]);??
????????if?(n==0)??
????????????printf(%3d%3d\n,available[0]);??
????????else??
????????????printf(\n);??
????}??
????line();??
}??
??
void?change()???//当Req
原创力文档

文档评论(0)