欢迎来到天天文库
浏览记录
ID:50395392
大小:69.00 KB
页数:14页
时间:2020-03-05
《操作系统课设报告页面置换算法.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、武汉轻工大学数学与计算机学院《操作系统》课程设计说明书题目:页式虚拟存储管理页面置换算法专业:班级:学号:姓名:指导老师:2015年5月26日目录一、设计目的二、设计内容三、基本原理和解决方案四、实验内容五、流程图六、源代码七、运行结果八、实验总结(心得体会)一、设计目的通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二、设计内容阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论
2、。前提:(1)页面分配采用固定分配局部置换。(2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。(3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。三、基本原理和解决方案存储管理是操作系统进行资源管理的一个重要功能。现代操作系统广泛采用虚拟存储的技术对内存进行扩充。实现虚拟存储的一个主要技术手段就是将辅存和主存统一管理,在二者之间进行对换,从而形成物理上两级而逻辑上一级的存储管理系统。一个置换算法的好坏对这个逻辑上的单级虚存的性能起着极其重要的作用,而且会影响处理机的调度性能。对
3、于本任务规定的前提:页面分配采用固定分配局部置换,则置换发生的时机是作业已经将操作系统分配的固定数目的物理块全部用完且发生缺页的时候。此时必须要将已经装入内存的部分逻辑页面换出以便将所缺的页面调入内存。置换算法就是一个决定将内存中“哪一个”页面换出的算法。四、实验内容1.通过随机数产生一个指令序列,共320条指令,指令的地址按下述原则生产:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布在后地址部分。2.将指令序列变换成为页地址流设页面大小为1K;用户内存容量为4页到32页;用户虚存容量为32K。在用户虚
4、存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条至第9条指令为第0页;第10条至19条指令为第1页;…第310条至319条指令为第31页。3.计算并输出下述各种算法在不同内存容量下的命中率。(1)先进先出算法(FIFO)(2)最近最少使用算法(LRU)(3)最佳使用算(OPT)命中率=1-页面失效次数/页地址流长度本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。一、流程图将页号放入物理块中,编号加1引用串编号大于物理块数?载入页号序列,从第0个得到页号开始页
5、号在物理块中?根据选择的置换算法完成置换页号序列载完?结束是否是是是是一、源代码#include#include#include#include#defineMyprintfprintf("
6、---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
7、")/*表格控制*/#definebsize4//物理块大小#definepsize16//进程大小typedefstructpage{i
8、ntnum;/*记录页面号*/inttime;/*记录调入内存时间*/}Page;/*页面逻辑结构,结构为方便算法实现设计*/Pageb[bsize];/*内存单元数*/intc[bsize][psize];/*暂保存内存当前的状态:缓冲区*/intqueue[100];/*记录调入队列*/intK;/*调入队列计数变量*/intphb[bsize]={0};//物理块标号intpro[psize]={0};//进程序列号intflag[bsize]={0};//进程等待次数(存放最久未被使用的进程标志)inti=0,j=0,k=0;//i
9、表示进程序列号,j表示物理块号intm=-1,n=-1;//物理块空闲和进程是否相同判断标志intmax=-1,maxflag=0;//标记替换物理块进程下标intcount=0;//统计页面缺页次数//**************************************************************////**************************************************************//随机产生序列号函数//******************************
10、********************************int*build(){printf("随机产生一个进程序列号为:");inti=0;for(i=0;i
此文档下载收益归作者所有