《2022年实验报告材料三虚拟内存页面置换算法.docx》由会员分享,可在线阅读,更多相关《2022年实验报告材料三虚拟内存页面置换算法.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 有用标准文案试验报告三 虚拟内存页面置换算法班级 学号 姓名一、 试验目的通过这次试验,加深对虚拟内存页面置换概念的懂得,进一步把握先进先出 FIFO,正确置换 OPI 和最近最久未使用LRU页面置换算法的实现方法;二、试验的开发环境1. 硬件设备: PC机一台 2. 软件环境:安装 Windows 操作系统或者 如 C C+Java 等编程语言环境;三、试验设计思路问题描述:Linux 操作系统,并安装相关的程序开发环境,设计程序模拟先进先出FIFO,正确置换OPI 和最近最久未使用LRU页面置换算法的工作过程;假设内存中安排给每个进程的最小
2、物理块数为m,在进程运行过程中要拜访的页面个数为 n,页面拜访序列为 P1, ,Pn ,分别利用不同的页面置换算法调度进程的页面拜访序列,给出页面拜访序列的置换过程,运算每种算法缺页次数和缺页率;四、试验内容及结果程序要求如下:1)利用先进先出FIFO,正确置换 OPI 和最近最久未使用LRU三种页面置换算法模拟页面拜访过程;2)模拟三种算法的页面置换过程,给出每个页面拜访时的内存安排情形;3)输入:最小物理块数m,页面个数n,页面拜访序列P1, ,Pn ,算法挑选 1-FIFO ,2-OPI ,3-LRU;4)输出:每种算法的缺页次数和缺页率;程序源码如下:#include iostream
3、.h const int DataMax=100; const int BlockNum = 10; int DataShowBlockNumDataMax; / 用于储备要显示的数组bool DataShowEnableBlockNumDataMax; / 用于储备数组中的数据是否需要显示/int DataDataMax=4,3,2,1,4,3,5,4,3,2,1,5,6,2,3,7,1,2,6,1; / 测试数据/int N = 20; / 输入页面个数int DataDataMax; / 储存数据int BlockBlockNum; / 物理块int countBlockNum; / 计
4、数器int N ; / 页面个数int M;/ 最小物理块数int ChangeTimes; void DataInput; / 输入数据的函数void DataOutput; void FIFO; / FIFO 函数void Optimal; / Optimal 函数void LRU; / LRU 函数文档名师归纳总结 - - - - - - -第 1 页,共 8 页精选学习资料 - - - - - - - - - 有用标准文案/* int mainint argc, char* argv DataInput;/ DataInput; / FIFO; / Optimal; / LRU; /
5、return 0; int menu; whiletrue coutendl; cout* 菜单挑选 *endl; cout*endl; cout* 1-FIFO *endl; cout* 2-Optimal *endl; cout* 3-LRU *endl; cout* 0-EXIT *endl; cout*menu; switchmenu case 1: FIFO;break; case 2: Optimal;break; case 3: LRU;break; default: break; ifmenu.=1&menu.=2&menu.=3 break; /*/ void DataInp
6、ut coutM; whileM BlockNum / 大于数据个数 coutM; coutN; whileN DataMax / 大于数据个数 coutN; cout 请输入页面拜访序列:endl; forint i=0;iDatai; 文档名师归纳总结 - - - - - - -第 2 页,共 8 页精选学习资料 - - - - - - - - - 有用标准文案void DataOutput int i,j; fori=0;iN;i+ / 对全部数据操作 coutDatai ; coutendl; forj=0;jM;j+ cout ; fori=0;iN;i+ / 对全部数据操作 if
7、DataShowEnableji coutDataShowji ; else cout ; coutendl; cout 缺页次数 : ChangeTimesendl; cout 缺页率 : ChangeTimes*100/N%endl; void FIFO int i,j; bool find; int point; int temp; / 暂时变量 ChangeTimes = 0; forj=0;jM;j+ fori=0;iN;i+ DataShowEnableji = false; / fori=0;i=3 的块,替换后计数值置 1, / 同时其它的块计数值加 1 ,成了( 1 3 2
8、),见下面先进先出程序段 fori=0;iN;i+ / 对有所数据操作 / 增加 count forj=0;jM;j+ countj+; find = false; / 表示块中有没有该数据 forj=0;j M / 由于 i 是从 0 开头记,而M指的是个数,从 / 获得要替换的块指针 temp = 0; forj=0;jM;j+ if temp countj temp = countj; point = j; / 获得离的最远的指针 else point = i; / 替换 Blockpoint = Datai; countpoint = 0; / 更新计数值 / 储存要显示的数据 for
9、j=0;jM;j+ DataShowji = Blockj; DataShowEnableiM.j=i.j:i:ji = true; / 设置显示数据 / 输出信息 cout endl; cout endl; DataOutput; void Optimal int i,j,k; bool find; int point; int temp; / 暂时变量,比较离的最远的时候用 ChangeTimes = 0; forj=0;jM;j+ fori=0;iN;i+ DataShowEnableji = false; / / fori=0;iM;i+ / / counti = 0 ; / / 初始
10、化为 false ,表示没有要显示的数据 fori=0;iN;i+ / 对有所数据操作 find = false; / 表示块中有没有该数据 forj=0;jM;j+ 文档名师归纳总结 - - - - - - -第 4 页,共 8 页精选学习资料 - - - - - - - - - 有用标准文案 if Blockj = Datai find = true; if find continue; / 块中有该数据,判定下一个数据 / 块中没有该数据,最优算法 ChangeTimes+; / 缺页次数 + forj=0;jM;j+ / 找到下一个值的位置 find = false; for k =i
11、;k M / 由于 i 是从 0 开头记,而BlockNum指的是个数,从1 开头,所以i+1 / 获得要替换的块指针 temp = 0; forj=0;jM;j+ if temp countj temp = countj; point = j; / 获得离的最远的指针 else point = i; / 替换 Blockpoint = Datai; / 储存要显示的数据 forj=0;jM;j+ DataShowji = Blockj; DataShowEnableiM.j=i.j:i:ji = true; / 设置显示数据 / 输出信息 cout endl; cout endl; Data
12、Output; void LRU 文档名师归纳总结 - - - - - - -第 5 页,共 8 页精选学习资料 - - - - - - - - - 有用标准文案 int i,j; bool find; int point; int temp; / 暂时变量 ChangeTimes = 0; forj=0;jM;j+ fori=0;iN;i+ DataShowEnableji = false; / fori=0;iM;i+ counti = 0 ; 初始化为 false ,表示没有要显示的数据 fori=0;iN;i+ / 对有所数据操作 / 增加 count forj=0;jM;j+ cou
13、ntj+; find = false; / 表示块中有没有该数据 forj=0;j M / 由于 i 是从 0 开头记,而BlockNum指的是个数,从 / 获得要替换的块指针 temp = 0; forj=0;jM;j+ if temp countj temp = countj; point = j; / 获得离的最远的指针 else point = i; / 替换 Blockpoint = Datai; countpoint = 0; / 储存要显示的数据 forj=0;jM;j+ DataShowji = Blockj; DataShowEnableiM.j=i.j:i:ji = tru
14、e; / 设置显示数据文档名师归纳总结 - - - - - - -第 6 页,共 8 页精选学习资料 - - - - - - - - - 有用标准文案 / 输出信息 cout endl; cout endl; DataOutput; 五、试验成效文档名师归纳总结 - - - - - - -第 7 页,共 8 页精选学习资料 - - - - - - - - - 有用标准文案六、试验总结通过这次试验我对先进先出 FIFO,正确置换 OPI 和最近最久未使用 LRU页面置换算法的实现方法;有了更多的明白;在编程过程中我也通过查阅书籍和复习以前的课本,对 C+编程语言进行了复习;通过这个试验我也体会到思路的重要性,一个程序假如一开头方案的好,结构设计完善, 才可能顺当进行; 这次试验模拟出了优先权调度算法,使我更加明白这一算法的调度过程;以前仅限于知道这一学问点,现在竟然能用程序来实现这个过程;我信任这将是一个很好的学习方法;我期望以后能够有更多的机会来锤炼自己,通过详细实践来提高自己编程的才能,来进一步把握和懂得在课堂上学到的东西,做到学以致用!总之,这次综合试验是我收益匪浅,是我明白了实际编程和理论学问间的差异,的实践扩充才能真正的懂得并学好这门课程;文档明白了在学习课本的基础上我们仍需要很大名师归纳总结 - - - - - - -第 8 页,共 8 页