欢迎来到天天文库
浏览记录
ID:15535488
大小:189.00 KB
页数:7页
时间:2018-08-03
《在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三、四存储管理一、实验目的帮助学生理解在不同的存储管理方式下应如何实现主存空间的分配和回收。理解好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能够合理地分配和使用这些存储空间。二、实验环境1、Java环境三、实验时数:4学时四、实验内容与步骤1.在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。2.在可变分区管理方式下采用最佳适应算法实现主存储器的分配和回收。3.在可变分区管理方式下采用最坏适应算法实现主存储器的分配和回收。要求:1。分配时输入作业号
2、以及申请量。2.回收时输入作业号。3.每次分配或回收之后按如下格式按照起始地址从小到大输出内存分配情况。(其中只有状态为“已分配”时才有对应的作业号)起始地址长度状态作业号五、实验报告实验题目。1.在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。1、2、程序中使用的数据结构及符合说明。用Node类模拟表示内存的当前状态。通过Node数组来开辟一组内存,然后用Link类来进行内存的连接3、程序流程图。6//Node.javaclassNode{//用Node来模拟内存的当前状态ints
3、tart;intsize;booleanstate;intjobNo;publicNode(){}publicNode(intstart,intsize,booleanstate,intjobNo){this.start=start;this.size=size;this.state=state;this.jobNo=jobNo;}publicvoidprint(){//打印Node类if(this!=null){System.out.println("起始位置"+this.start+"大小"+
4、this.size+"状态"+this.state+"工作号"+this.jobNo);}}};//Link.javaclassLink{//用Link类来模拟连接各个内存,并添加作业publicvoidaddJob(intsize,intjobNo,Nodea[]){for(inti=0;i5、ize-size;//当前内存分配大小给作业if(a[i+1]==null){//当下一块内存还没有使用时a[i+1]=newNode(size+a[i].start,size,true,jobNo);//使用该内存}else{//当下一块内存已被使用,那么继续寻找一块还没被使用的内存for(intj=i+1;j6、用的内存及填入内容后跳出循环6}}}}a[i].print();//打印输出当前Link中各个内存块的使用情况}}}publicvoiddelete(Nodea[],intjobNo){//删除某一个进程,当该进程被删除后,进程所在内存的状态变为falsefor(inti=0;i7、{a[i].print();}}}}publicvoidback(Nodea[]){//进行状态为false的内存的回收删除内存状态为false的内存节点。并将该节点与起始点结合for(inti=1;i8、}}}6}//OSJob.javapublicclassOSJob{publicstaticvoidmain(Stringargs[]){NodejobArray[]=newNode[70];jobArray[0]=newNode(0,25,false,0);Linkl=newLink();System.out.println("...................起始的内存..................................");jobArray[0].prin
5、ize-size;//当前内存分配大小给作业if(a[i+1]==null){//当下一块内存还没有使用时a[i+1]=newNode(size+a[i].start,size,true,jobNo);//使用该内存}else{//当下一块内存已被使用,那么继续寻找一块还没被使用的内存for(intj=i+1;j6、用的内存及填入内容后跳出循环6}}}}a[i].print();//打印输出当前Link中各个内存块的使用情况}}}publicvoiddelete(Nodea[],intjobNo){//删除某一个进程,当该进程被删除后,进程所在内存的状态变为falsefor(inti=0;i7、{a[i].print();}}}}publicvoidback(Nodea[]){//进行状态为false的内存的回收删除内存状态为false的内存节点。并将该节点与起始点结合for(inti=1;i8、}}}6}//OSJob.javapublicclassOSJob{publicstaticvoidmain(Stringargs[]){NodejobArray[]=newNode[70];jobArray[0]=newNode(0,25,false,0);Linkl=newLink();System.out.println("...................起始的内存..................................");jobArray[0].prin
6、用的内存及填入内容后跳出循环6}}}}a[i].print();//打印输出当前Link中各个内存块的使用情况}}}publicvoiddelete(Nodea[],intjobNo){//删除某一个进程,当该进程被删除后,进程所在内存的状态变为falsefor(inti=0;i7、{a[i].print();}}}}publicvoidback(Nodea[]){//进行状态为false的内存的回收删除内存状态为false的内存节点。并将该节点与起始点结合for(inti=1;i8、}}}6}//OSJob.javapublicclassOSJob{publicstaticvoidmain(Stringargs[]){NodejobArray[]=newNode[70];jobArray[0]=newNode(0,25,false,0);Linkl=newLink();System.out.println("...................起始的内存..................................");jobArray[0].prin
7、{a[i].print();}}}}publicvoidback(Nodea[]){//进行状态为false的内存的回收删除内存状态为false的内存节点。并将该节点与起始点结合for(inti=1;i8、}}}6}//OSJob.javapublicclassOSJob{publicstaticvoidmain(Stringargs[]){NodejobArray[]=newNode[70];jobArray[0]=newNode(0,25,false,0);Linkl=newLink();System.out.println("...................起始的内存..................................");jobArray[0].prin
8、}}}6}//OSJob.javapublicclassOSJob{publicstaticvoidmain(Stringargs[]){NodejobArray[]=newNode[70];jobArray[0]=newNode(0,25,false,0);Linkl=newLink();System.out.println("...................起始的内存..................................");jobArray[0].prin
此文档下载收益归作者所有