欢迎来到天天文库
浏览记录
ID:10244988
大小:63.50 KB
页数:7页
时间:2018-06-13
《河南科技大学系统结构实验报告 实验二》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二计算机存储体系的页面替换算法一、实验目的当计算机内存已满而又发生页面失效时,替换算法就要选择主存中哪个页作为被替换的页。通过本实验可以帮助学生理解虚拟存储器中页面替换的基本思想,深刻体会各种页面替换算法的性能差异。二.实验环境开发工具使用windows平台下的vc++6.0。三.实验内容编写一个模拟算法,模拟实现虚拟存储器的先进先出、近期最少使用、优化等算法。在程序设计的过程中,要求体会各种页面替换算法的优点和缺点,并计算出各种替换算法的命中率。四.实验结果一、整个实验过程的思路可以整理如下:1.初
2、始化虚拟存储空间。2.产生一个随机调用页面的序列。3.实现各种页面替换算法。4.计算各种页面替换算法的命中率。二、实验中的几点注意事项:i.虚拟存储空间的大小要合适。2.根据能够存储页面的多少确定随机调用页面的序列。源代码如下:源代码如下:#include#includeusingnamespacestd;intinputSize;intmemorySize;int*in;//请求序列int*memory;//模拟内存voidFIFO();structpage{intp
3、ageNum;intmemoryNum;intisInmemory;};pagepageTable[10];//假设虚拟页面数10个,页表长度10intmain(){for(inti=0;i<10;i++)//初始化页表{pageTable[i].pageNum=i;pageTable[i].memoryNum=-1;pageTable[i].isInmemory=0;}cout<<"输入待调入页面数"<>inputSize;cout<<"输入可使用的物理块数"<>
4、memorySize;in=newint[inputSize];memory=newint[memorySize];inttemp;intselect;srand((unsigned)time(NULL));cout<<"随机生成请求序列?(1是)"<>select;if(1==select){cout<<"随机生成页面请求序列(0-9)"<5、}else{cout<<"输入"<>temp;in[i]=temp;}}cout<6、/记录缺页次数intfirstIn=0;//记录最先被占用的物理块号,装有最先进入内存的页面号intisFull=0;//记录物理块是否已被占满,当isFull=3时表示已经装满,如果再缺页则发生替换intpage=0;//记录将要访问的页面号do//物理块未被占满时{if(pageTable[in[page]].isInmemory==1)//in[i]在memory中{cout<7、elsecontinue;}else{lackTime++;cout<8、[in[page]].memoryNum=isFull;isFull++;page++;if(page==inputSize)break;}}while(isFull!=memorySize);//物理块被占满时退出循环for(i=page;i
5、}else{cout<<"输入"<>temp;in[i]=temp;}}cout<6、/记录缺页次数intfirstIn=0;//记录最先被占用的物理块号,装有最先进入内存的页面号intisFull=0;//记录物理块是否已被占满,当isFull=3时表示已经装满,如果再缺页则发生替换intpage=0;//记录将要访问的页面号do//物理块未被占满时{if(pageTable[in[page]].isInmemory==1)//in[i]在memory中{cout<7、elsecontinue;}else{lackTime++;cout<8、[in[page]].memoryNum=isFull;isFull++;page++;if(page==inputSize)break;}}while(isFull!=memorySize);//物理块被占满时退出循环for(i=page;i
6、/记录缺页次数intfirstIn=0;//记录最先被占用的物理块号,装有最先进入内存的页面号intisFull=0;//记录物理块是否已被占满,当isFull=3时表示已经装满,如果再缺页则发生替换intpage=0;//记录将要访问的页面号do//物理块未被占满时{if(pageTable[in[page]].isInmemory==1)//in[i]在memory中{cout<7、elsecontinue;}else{lackTime++;cout<8、[in[page]].memoryNum=isFull;isFull++;page++;if(page==inputSize)break;}}while(isFull!=memorySize);//物理块被占满时退出循环for(i=page;i
7、elsecontinue;}else{lackTime++;cout<8、[in[page]].memoryNum=isFull;isFull++;page++;if(page==inputSize)break;}}while(isFull!=memorySize);//物理块被占满时退出循环for(i=page;i
8、[in[page]].memoryNum=isFull;isFull++;page++;if(page==inputSize)break;}}while(isFull!=memorySize);//物理块被占满时退出循环for(i=page;i
此文档下载收益归作者所有