操作系统报告三

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验3存储器管理模拟实验一、实验目的1.通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解;2.熟悉虚存管理的各种页面淘汰算法;3.通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二、实验准备1.虚拟存储器的管理方式段式管理页式管理段页式管理2.页面置换算法先进先出置换算法最近最久未使用置换算法Clock置换算法其他置换算法三、实验内容1.实验题目设计一个请求页式存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得50%的指令是顺序执行的。25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。为简单起见。页面淘汰算法采用FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。2.具体做法产生一个需要访问的指令地址流;指令合适的页面尺寸(例如以1K或2K为1页);指定内存页表的最大长度,并对页表进行初始化;每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不足主存且页表已满,则按FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。3.存储管理算法的流程图四、相关代码#includestdio.h#includestdlib.h#defineBUSY0#defineNOTBUSY1structPage{intPNumber;//页号intBNumber;//物理块号intCount;//计数器boolState;//状态位}Page[6]={{0,2,3,true},{1,1,2,true},{2,-1,0,false},{3,0,1,true},{4,-1,0,false},{5,-1,0,false}};//对页表进行初始化//利用结构体数组存储页表structPhysical{intBNumber;//物理块号intState;//状态位}Physical[3]={{0,1},{1,1},{2,1}};//利用结构体数组初始化页框intmain(){intP,BNumber;inti,j,k;intMaxSzie,MaxCount=0;printf(\nPleaseinputthesizeofthecourse:);scanf(%d,&MaxSzie);//输入进程大小intAddress;printf(\nPleaseinputtheaddress:);scanf(%d,&Address);//输入要访问的地址while(Address0||AddressMaxSzie){printf(ERROR);printf(\nPleaseinputtheaddressagain:);scanf(%d,&Address);}P=Address/1024;for(i=0;i=5;i++){if(Page[i].PNumber==P&&Page[i].State==true)//在页表中并在主存中{printf(\n页在主存,打印页表:);printf(\n***************\n页号:%d\n物理块号:%d\n状态:%d\n***************\n,Page[i].PNumber,Page[i].BNumber,Page[i].State);}}for(i=0;i=5;i++){if(Page[i].PNumber==P&&Page[i].State==false){printf(\n在辅存);//判断页面是否已满if(Physical[0].State==BUSY&&Physical[1].State==BUSY&&Physical[2].State==BUSY){for(j=0;j=5;j++){if(Page[j].Count=MaxCount&&Page[j].State==true){MaxCount=Page[j].Count;k=j;}}BNumber=Page[k].BNumber;Page[k].Count=0;Page[k].State=false;Page[i].BNumber=BNumber;Page[i].State=true;//修改countfor(j=0;j=5;j++)if(Page[j].State==true)Page[j].Count=Page[j].Count+1;//淘汰页面,重新调入printf(/n页在辅存并已调入主存,打印页表:);printf(\n***************\n页号:%d\n物理块号:%d\n状态:%d\n***************\n,Page[i].PNumber,Page[i].BNumber,Page[i].State);}else{for(j=0;j=2;j++){if(Physical[j].State==NOTBUSY){Page[i].BNumber=Physical[j].BNumber;Page[i].State=true;for(j=0;j=5;j++)if(Page[j].State==true)Page[j].Count=Page[j].Count+1;printf(/n页在辅存,打印页表:);printf(\n***************\n页号:%d\n物理块号:%d\n状态:%d\n***************\n,Page[i].PNumber,Page[i].BNumber,Page[i].State);}}}}}system(PAUSE);/*pausetoseetheresult*/return0;}五、运行结果

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功