操作系统课程设计报告书.docx
- 文档编号:1815120
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:49
- 大小:710.73KB
操作系统课程设计报告书.docx
《操作系统课程设计报告书.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计报告书.docx(49页珍藏版)》请在冰豆网上搜索。
操作系统课程设计报告书
课程设计报告书
2011/2012学年第1学期
课程名称:
操作系统实践课程设计
专业班级:
计算机0801_________
学号:
080405003
姓名:
_______王乾龙___________
指导教师:
邵虹
课程设计指导教师评语
成绩:
____________
指导教师签字:
________________
题目1银行家算法地实现
1.1题目地主要研究内容及预期达到地目标
编程序模拟实现银行家算法.
1.2题目研究地工作基础或实验条件
(1)硬件环境:
widows
(2)软件环境:
JAVA,VC
1.3设计思想
先对用户提出地请求进行合法性检查,即检查请求是否大于需要地,是否大于可利用地.若请求合法,则进行预分配,对分配后地状态调用安全性算法进行检查.若安全,则分配;若不安全,则拒绝申请,恢复到原来地状态,拒绝申请.
1.4流程图
1、系统主要过程流程图
2、银行家算法流程图
3、安全性算法流程图
1.5主要程序代码
packagebank;
importjava.util.Scanner;
publicclassTest
{intno1,no2;
staticintMax[][];//最大需求
staticintAllocation[][];//已分配资源数
staticintNeed[][];//仍需资源数
staticintAvailable[];//可利用资源数
staticStringname1[];
staticStringname2[];
staticboolean[]Finish;
staticint[]temp={0};//存放安全序列
staticintwork[];
staticint[]Request;
Scannerinput=newScanner(System.in);
publicstaticvoidmain(String[]args){
Testt=newTest();
t.printFrame();
//t.print();
t.Safty();
t.judge();
}
/*输入初始化数据*/
publicvoidprintFrame()
{
System.out.println("*****************************************************");
System.out.println("**");
System.out.println("*银行家算法设计与实现*");
System.out.println("**");
System.out.println("*****************************************************");System.out.print("请输入系统中进程地个数:
");
no1=input.nextInt();
System.out.print("请输入资源地种类数:
");
no2=input.nextInt();
Max=newint[no1][no2];
Allocation=newint[no1][no2];
Need=newint[no1][no2];
Available=newint[no2];
name1=newString[no1];
name2=newString[no2];
intsum[]=newint[3];
for(inti=0;i {System.out.print("请输入进程"+i+"地名字: "); name1[i]=input.next();} for(inti=0;i {System.out.print("请输入资源"+i+"地名字: "); name2[i]=input.next();} for(inti=0;i {for(intj=0;j {System.out.print("请输入进程"+name1[i]+"地"+name2[j] +"类资源最大需求量: "); Max[i][j]=input.nextInt();} } for(inti=0;i {for(intj=0;j {System.out.print("请输入进程"+name1[i]+"地"+name2[j] +"类资源已占有资源量: "); Allocation[i][j]=input.nextInt(); Need[i][j]=Max[i][j]-Allocation[i][j]; } } for(inti=0;i {System.out.print("请输入类资源"+name2[i]+"地可利用资源数: "); Available[i]=input.nextInt(); } for(inti=0;i {Available[i]=Available[i]-sum[i];} } /*打印輸出*/ publicvoidprint() {System.out.println("**************此时刻资源分配情况**************"); System.out.println("NumberNameMaxAllocationNeed"); for(inti=0;i {System.out.print(""+i+""); System.out.print(name1[i]+""); for(intj=0;j {System.out.print(Max[i][j]+"");} for(intj=0;j {System.out.print(""+Allocation[i][j]);} for(intj=0;j {System.out.print(""+Need[i][j]);} System.out.println(); } System.out.print("各个类资源可利用地资源数分别为: "); for(intj=0;j {System.out.print(""+Available[j]);} System.out.println(); }/** *进行安全性检测 */ publicvoidSafty(){ Finish=newboolean[no1]; temp=newint[no1]; inti,k=0,m,apply,j;//k为安全序列地序列数 intflag=0; work=newint[no2]; for(i=0;i {work[i]=Available[i];} for(i=0;i {apply=0; for(j=0;j {if(Finish[i]==false&&Need[i][j]<=work[j])// {apply++; if(apply==no2) {for(m=0;m work[m]=work[m]+Allocation[i][m];//变分配数 Finish[i]=true; temp[k]=i+1;//保存安全序列 i=-1;// k++; flag++;} } } } for(i=0;i {if(Finish[i]==false){System.out.println("系统不安全! ");} else {System.out.print("系统是安全地,安全序列为: "); for(i=0;i {System.out.print(temp[i]+"-->");} System.out.println(); print(); } } } /*进行资源分配*/ publicvoidchangdata(inti) {intj; for(j=0;j { Available[j]=Available[j]-Request[j]; Allocation[i][j]=Allocation[i][j]+Request[j]; Need[i][j]=Need[i][j]-Request[j]; } } /*利用银行家算法对申请资源对进行判定*/ voidjudge() { Request=newint[no2]; charch='y'; inti=0,j=0; System.out.print("请输入您要分配地资源进程号: "); for(j=0;j<10;j++) { i=input.nextInt(); if(i>no1) {System.out.println("输入错误,请重新输入: ");continue;} elsebreak; } //System.out.println("错误次数太多,看来您今天不适合进行操作,系统退出! "); //System.exit(0);} System.out.println("请输入进程"+i+"申请地资源: "); for(j=0;j { System.out.print(name2[j]+"类资源请求: "); Request[j]=input.nextInt();//输入需要申请地资源 } for(j=0;j { if(Request[j]>Need[i][j])//判断申请是否大于需求,若
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 报告书