操作系统课程设计报告书.docx

上传人:b****2 文档编号:1815120 上传时间:2022-10-24 格式:DOCX 页数:49 大小:710.73KB
下载 相关 举报
操作系统课程设计报告书.docx_第1页
第1页 / 共49页
操作系统课程设计报告书.docx_第2页
第2页 / 共49页
操作系统课程设计报告书.docx_第3页
第3页 / 共49页
操作系统课程设计报告书.docx_第4页
第4页 / 共49页
操作系统课程设计报告书.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

操作系统课程设计报告书.docx

《操作系统课程设计报告书.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计报告书.docx(49页珍藏版)》请在冰豆网上搜索。

操作系统课程设计报告书.docx

操作系统课程设计报告书

课程设计报告书

 

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])//判断申请是否大于需求,若

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1