网站大量收购独家精品文档,联系QQ:2885784924

实验五--虚拟内存页面置换算法.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五 虚拟内存页面置换算法 一:实验目的 通过这次实验,加深对虚拟内存页面置换概念的理解,进一步掌握先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。 二:实验内容 问题描述: 设计程序模拟先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。 程序要求: 1)利用先进先出FIFO、最佳置换OPI和最近最久未使用LRU三种页面置换算法模拟页面访问过程。 2)模拟三种算法的页面置换过程,给出每个页面访问时的内存分配情况。 3)输入:最小物理块数m,页面个数n,页面访问序列P1, … ,Pn,算法选择1-FIFO,2-OPI,3-LRU。 4)输出:每种算法的缺页次数和缺页率。 实现提示: 用C++语言实现提示: 1)程序中变量定义参考如下: int PageOrder[MaxNumber]; int Time[MaxNumber]; int Simulate[MaxNumber][MaxNumber]; int PageCount[MaxNumber]; int PageNum,LackNum,PageMin; double LackPageRate; bool found; 2)页面置换的实现过程如下: 变量初始化; 接收用户输入最小物理块数m,页面个数n,页面序列P1, … ,Pn,选择算法1-FIFO,2-OPI,3-LRU; 根据用户选择的算法进行页面的分配和置换,输出页面置换算法的模拟过程; 计算选择算法的缺页次数和缺页率; 输出选择算法的缺页次数和缺页率。 三:概要设计 输入函数void input() 初始化函数void Initial() 显示函数void show() 先进先出算法的函数void FIFO() 最佳置换算法的函数void OPI() 最近最久未使用置换算法void LRU() 主函数void main() { input(); int s=0; while(s!=4) { cout请选择算法:endl; cout1:先进先出;2:最佳值换算法;3:最近最久未使用置换算法;4:退出endl; cins; switch(s) { case 1: FIFO(); show(); break; case 2: OPI(); show(); break; case 3: LRU(); show(); break; case 4: return; default: cout输入数字不对,请重新输入:; break; } } } 四:结果测试和截图以及说明 输入:页面个数 20 页面数列 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 系统为进程分配的物理块:3 输出结果如截图所示: 先进先出算法: 2.最佳置换算法 3.LRU算法 说明:—1表示的是物理块中没有页面。 相邻的相同的也同时表示出来了并没有空出。 五:源代码 #includeiostream.h //using namespace std; const int MaxNumber=100; int PageOrder[MaxNumber]; int Time[MaxNumber]; int Simulate[MaxNumber][MaxNumber]; int PageCount[MaxNumber]; int PageNum,LackNum,PageMin; double LackPageRate; bool found; //输入 void input() { cout请输入页面个数:(PageNum)endl; cinPageNum; while(PageNumMaxNumber) { cout页面个数太大,请重新输入:(PageNum)endl; cinPageNum; } cout请输入页面序列:endl; for(int i_PageOrder=0;i_PageOrderPageNum;i_PageOrder++) { cinPageOrder[i_PageOrder]; } cout请输入系统分配的最小页面个数:(PageMin)endl; cinPageMin;

文档评论(0)

annylsq + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档