您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 操作系统课程设计页面置换算法
操作系统课程设计说明书题目:页面置换算法程序设计院系:计算机科学与工程专业班级:学号:学生姓名:指导教师:2014年11月21日I计算机院系计算机教研室学号学生姓名专业(班级)设计题目页面置换算法程序设计设计技术参数系统平台:Windows7/WindowsXP开发工具:VC++6.0设计要求编写程序实现:(1)先进先出页面置换算法(FIFO)(2)最近最久未使用页面置换算法(LRU)(3)最佳置换页面置换算法(OPT)设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。演示页面置换的三种算法。通过随机数产生一个指令序列,将指令序列转换成为页地址流。计算并输出各种算法在不同内存容量下的命中率。工作量要求设计说明书的字数在3000字以上。工作计划2014.12.01-12.02根据课程设计的要求,查找相关资料,完成需求分析;2014.12.03-12.05进行系统的概要设计;2014.12.06-12.11进行系统的详细设计和源代码的书写;2014.12.12-12.14对系统进行调试分析,写出课程设计报告。参考资料[1]龚沛曾等编.C/C++程序设计教程.北京:高等教育出版社,2004.[2]谭浩强编著.C程序设计(第二版).北京:清华大学出版社,1999.[3]张尧学等编著.计算机操作系统教程.北京:清华大学出版社,2011.[4]孟庆昌等编.操作系统.北京:电子工业出版社,2009.[5]刘腾红等编著.操作系统.北京:中国铁道出版社,2008.[6]汤子瀛等编著.计算机操作系统.西安:西安电子科技大学出版社,2011指导教师签字教研室主任签字2014年11月21日II安徽理工大学课程设计(论文)成绩评定表指导教师评语:成绩:指导教师:年月日III目录1问题描述.................................................................................................12需求分析.................................................................................................13概要设计.................................................................................................13.1设计思路......................................................................................13.2功能模块设计..............................................................................23.3算法流程图..................................................................................24详细设计.................................................................................................44.1相关知识......................................................................................44.2置换算法函数代码设计..............................................................44.3辅助函数代码设计....................................................................105调试分析...............................................................................................126测试结果...............................................................................................137设计体会...............................................................................................15参考文献...................................................................................................1511问题描述编写程序实现:(1)先进先出页面置换算法(FIFO)(2)最近最久未使用页面置换算法(LRU)(3)最佳置换页面置换算法(OPT)设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。演示页面置换的三种算法。通过随机数产生一个指令序列,将指令序列转换成为页地址流。计算并输出各种算法在不同内存容量下的命中率。2需求分析在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。在进程运行过程中,若其所要访问的页面不在内存需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,所以需要根据一定的算法来确定。常用的算法有先进先出置换算法(FIFO)、最近最久未使用置换算法(LRU)和最佳置换算法(OPT),该设计是在VC++6.0环境下用上述三种算法来实现页面置换算法的模拟程序,然后计算访问命中率,并测试结果。3概要设计3.1设计思路选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换:FIFO基本思想:是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。2或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。LRU基本思想:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。OPT基本思想:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组next[mSIZE]记录物理块中对应页面的最后访问时间。每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。3.2功能模块设计(1)置换算法函数:voidFIFO():先进先出页面置换算法voidLRU():最近最久未使用置换算法voidOPT():最佳置换算法(2)辅助函数:voidoutput(intt):计算输出voidshowInfo():显示信息voiddownload():载入数据voidmDelay(intDelay):设置延迟voidcompute():计算过程延迟3.3算法流程图算法流程图如图1所示。3图1算法流程图44详细设计4.1相关知识(1)虚拟存储器的引入:局部性原理:程序在执行时在一较短时间内仅限于某个部分;相应的,它所访问的存储空间也局限于某个区域,它主要表现在以下两个方面:时间局限性和空间局限性。(2)虚拟存储器的定义:虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。(3)虚拟存储器的实现方式:分页请求系统,它是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页面形式虚拟存储系统。请求分段系统,它是在分段系统的基础上,增加了请求调段及分段置换功能后,所形成的段式虚拟存储系统。(4)页面分配:平均分配算法,是将系统中所有可供分配的物理块,平均分配给各个进程。按比例分配算法,根据进程的大小按比例分配物理块。考虑优先的分配算法,把内存中可供分配的所有物理块分成两部分:一部分按比例地分配给各进程;另一部分则根据个进程的优先权,适当的增加其相应份额后,分配给各进程。(5)页面置换算法:常用的页面置换算法有FIFO、LRU、OPT等。4.2置换算法函数代码设计(1)先进先出页面置换算法设计算法思想:借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。其功能实现代码如下:voidFIFO(){5intmemery[10]={0};inttime[10]={0};/*记录进入物理块的时间*/inti,j,k,m;intmax=0;/*记录换出页*/intcount=0;/*记录置换次数*//*前mSIZE个数直接放入*/for(i=0;imSIZE;i++){memery[i]=page[i];time[i]=i;for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}for(i=mSIZE;ipSIZE;i++){/*判断新页面号是否在物理块中*/for(j=0,k=0;jmSIZE;j++){if(memery[j]!=page[i])k++;}if(k==mSIZE)/*如果不在物理块中*/{count++;/*计算换出页*/max=time[0]time[1]?0:1;for(m=2;mmSIZE;m++)if(time[m]time[max])max=m;memery[max]=page[i];time[max]=i;/*记录该页进入物理块的时间*/6for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}else{for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}}compute();output(count);}(2)最近最久未使用置换算法设计算法思想:用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。其功能实现代码如下:voidLRU(){intmemery[10]={0};intflag[10]={0};/*记录页面的访问时间*/inti,j,k,m;intmax=0;/*记录换出页*/intcount=0;/*记录置换次数*/*前mSIZE个数直接放入*/for(i=0;imSIZE;i++){memery[i]=page[i];7flag[i]=i;for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}for(i=mSIZE;ipSIZE;i++){/*判断新页面号是否在物理块中*/for(j=0,k=0;jmSIZE;j++){if(memery[j]!=page[i])k++;elseflag[j]=i;/*刷新该页的访问时间*/}if(k==mSIZE)/*如果不在物理块中*/{count++;/*计算换出页*/max=flag[0]flag[1]?0:1;for(m=2;mmSIZE;m++)if(flag[m]flag[max])max=m;memery[max]=page[i];flag[max]
本文标题:操作系统课程设计页面置换算法
链接地址:https://www.777doc.com/doc-6139960 .html