操作系统 动态分区分配算法 java版Word文件下载.docx

上传人:b****2 文档编号:14528594 上传时间:2022-10-23 格式:DOCX 页数:12 大小:60.90KB
下载 相关 举报
操作系统 动态分区分配算法 java版Word文件下载.docx_第1页
第1页 / 共12页
操作系统 动态分区分配算法 java版Word文件下载.docx_第2页
第2页 / 共12页
操作系统 动态分区分配算法 java版Word文件下载.docx_第3页
第3页 / 共12页
操作系统 动态分区分配算法 java版Word文件下载.docx_第4页
第4页 / 共12页
操作系统 动态分区分配算法 java版Word文件下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

操作系统 动态分区分配算法 java版Word文件下载.docx

《操作系统 动态分区分配算法 java版Word文件下载.docx》由会员分享,可在线阅读,更多相关《操作系统 动态分区分配算法 java版Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。

操作系统 动态分区分配算法 java版Word文件下载.docx

适应算法四种动态分区分配算法模拟分区分配过程。

2)模拟四种算法的分区分配过程,给出每种算法进程在空闲分区

中的分配情况。

3)输入:

空闲分区个数n,空闲分区大小P,…,P,进程个数m,1n

进程需要的分区大小S,…,S,算法选择1-首次适应算法,2-循1m

环首次适应算法,3-最佳适应算法,4-最坏适应算法4、需求分析

(1)输入的形式和输入值的范围

算法选择

空闲分区个数

空闲分区大小(KB)

作业个数

作业名称

作业大小(KB)

(2)输出的形式

最终内存空闲分区的分配情况

5、调试分析

通过这次课程设计我练习了用JAVA写系统软件,对OS中可变分区存储管理有了更深刻的了解。

在写程序的时候也遇到了一些困难。

比如在设计数据结构时特别犹豫,总想找一个很合适的。

但是,后来才知道,关键要多尝试,而空想是没有用的。

最后我证实了自己的设计的合理性。

还有为了使程序更健壮,我尝试着将程序中的输入部分全部改为字符(串)。

很遗憾的是因为时间问题,没有把这个模拟程序写成动画形式,还可以加几句代码后实现动态的增加作业。

通过本次实验,深入理解了动态分区分配算法的思想,培养了自己的动手能力,通过实践加深了记忆。

6、测试结果

(1)首次适应算法

(2)循环首次适应算法

(3)最佳适应算法

(4)最坏适应算法:

7、附录(java)

packageexperiment;

importjava.io.BufferedInputStream;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.util.Scanner;

publicclassD_ProcessPartition{

privatestaticintMaxNum=100;

//空闲分区个数

privatestaticintn;

//作业个数

privatestaticintm;

//空闲分区大小

privatestaticintFreePartition[]=newint[MaxNum];

//作业名称

privatestaticcharProcessName[]=newchar[MaxNum];

//作业需求空间大小

privatestaticintProcessNeed[]=newint[MaxNum];

//作业分配标志

privatestaticbooleanstate[]=newboolean[MaxNum];

privatestaticintPartitionNum;

privatestaticintProcessNum;

//?

?

privatestaticcharorder[][]=newchar[MaxNum][MaxNum];

privatestaticcharch[]=newchar[MaxNum];

//临时变量

privatestaticinttemp;

//算法选择

//1-首次适应算法

//2-循环首次适应算法

//3-最佳适应算法

//4-最坏适应算法

privatestaticintoption=0;

//for循环中使用

privatestaticinti;

privatestaticintj;

privatestaticintk;

privatestaticintd;

privatestaticScannerstdin;

publicstaticvoidmain(String[]args)throwsFileNotFoundException{

//输入数据

input();

//选择算法

switch(option)

{

case1:

System.out.println("

对作业用首次适应算法进行空间分配:

"

);

First();

output();

break;

case2:

对作业用循环首次适应算法进行空间分配:

CycleFirst();

case3:

对作业用最佳适应算法进行空间分配:

Best();

case4:

对作业用最坏适应算法进行空间分配:

Worst();

default:

********error!

*****"

}

publicstaticvoidinput()throwsFileNotFoundException

BufferedInputStreamin=newBufferedInputStream(newFileInputStream(

./file/04"

));

System.setIn(in);

stdin=newScanner(System.in);

option=stdin.nextInt();

//请输入空闲分区个数

n=stdin.nextInt();

//请依次输入空闲分区大小(KB)

for(i=0;

i<

n;

i++){

FreePartition[i]=stdin.nextInt();

//请输入作业个数

m=stdin.nextInt();

//请依次输入作业名称

m;

ProcessName[i]=stdin.next().charAt(0);

ch[i]=ProcessName[i];

//请依次输入作业大小(KB)

for(i=0;

i<

m;

i++)

ProcessNeed[i]=stdin.nextInt();

state[i]=false;

n;

System.out.print("

|"

+FreePartition[i]);

|\n"

作业信息如下:

System.out.print(ProcessName[i]+"

\t"

\n"

System.out.print(ProcessNeed[i]+"

//1——首次适应算法

publicstaticvoidFirst()

for(j=0;

j<

j++)

//找到第一个合适的空闲分区

if((ProcessNeed[i]<

=FreePartition[j])&

&

(!

state[i]))

for(k=0;

k<

3;

k++)//记录作业分配

if(order[j][k]==0)//为空

order[j][k]=ProcessName[i];

else

continue;

FreePartition[j]=FreePartition[j]-ProcessNeed[i];

state[i]=true;

//2——循环首次适应算法

publicstaticvoidCycleFirst()

i=0;

j=0;

while((i<

n)&

(j<

m))

if(order[j][k]==0)

i++;

j++;

//3——最佳适应算法

publicstaticvoidBest()

temp=FreePartition[0];

k=0;

while(ProcessNeed[i]>

temp)

k++;

temp=FreePartition[k];

//按最佳适应算法找到符合的空闲区

(temp>

FreePartition[j])&

temp=FreePartition[j];

k=j;

}

for(d=0;

d<

d++)//记录作业分配

if(order[k][d]==0)

order[k][d]=ProcessName[i];

FreePartition[k]=FreePartition[k]-ProcessNeed[i];

//4——最

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

当前位置:首页 > 高中教育 > 小学教育

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

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