收藏 分享(赏)

请求调页存储管理方式的模拟LFU(含源代码).doc

上传人:dzzj200808 文档编号:2722125 上传时间:2018-09-26 格式:DOC 页数:20 大小:338.50KB
下载 相关 举报
请求调页存储管理方式的模拟LFU(含源代码).doc_第1页
第1页 / 共20页
请求调页存储管理方式的模拟LFU(含源代码).doc_第2页
第2页 / 共20页
请求调页存储管理方式的模拟LFU(含源代码).doc_第3页
第3页 / 共20页
请求调页存储管理方式的模拟LFU(含源代码).doc_第4页
第4页 / 共20页
请求调页存储管理方式的模拟LFU(含源代码).doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、1课 程 设 计课程设计名称:请求调页存储管理方式的模拟 4 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2012.12.24-2012.12.28 2计算机科学 专业课程设计任务书学生姓名 专业班级 学号题 目 请求调页存储管理方式的模拟 4课题性质 其它 课题来源 自拟课题指导教师 同组姓名 无主要内容1)假设每个页面中可存放 10 条指令,分配给作业的内存块数为 4。2)用 C 语言模拟一个作业的执行过程,该作业共有 320 条指令,即它的地址空间为 32 页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地

2、址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果 4 个内存块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。在所有 320 指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。3)置换算法:最少访问(LFU)算法。任务要求通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。参考文献任满杰等操作系统原理实用教程 电子工业出版社 2006汤子瀛 计算机操作系统 (修订版)西安电子科技大学出版社 2001张尧学 史美林计算机操作系统教程实验指导 清华大学出版社 2000 罗宇

3、等 操作系统课程设计机械工业出版社 2005审查意见指导教师签字:教研室主任签字: 年 月 日 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页3填 表 说 明1 “课题性质”一栏:A工程设计;B工程技术研究;C软件工程(如 CAI 课题等) ;D文献型综述;E其它。2 “课题来源”一栏:A自然科学基金与部、省、市级以上科研课题;B企、事业单位委托课题;C校、院 (系、部)级基金课题;D自拟课题。41 需求分析1)假设每个页面中可存放 10 条指令,分配给作业的内存块数为 4。2)用 C 语言模拟一个作业的执行过程,该作业共有 320 条指令,即它的地址空间为

4、 32 页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果 4个内存块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。在所有 320 指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。3)置换算法:最少访问(LFU)算法。通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。所有内容均为独立完成。2 概要设计本实验主要分为以下几个重要实现过程:(1) 首先由对应函数按照题目要求产生对应的

5、 320 条随即指令。(2) 当指令到来时,首先查询 4 个物理模块中是否含有当前指令,如果有则直接下一条指令,若没有就进行判定查找物理块中是否还有空闲盘块,有该指令则直接调入,无则要发生页面置换。(3) 按照一定规则(LFU)进行页面置换,知道最后一条指令完成后,显示缺页次数和缺页率。程序中自定义的函数(函数名,参数,以及功能)及结构等如下:#define Bsize 4 定义一个全局的物理块大小 4struct BLOCK 物理块类型的申明int pagenum; /用于存储页号int use; /用于计算最近使用次数;int num=0; /记录指令的序号int n=0; /记录缺页的次

6、数static int temp320; /用来存储 320 条指令5struct BLOCK block4; /大小为 4 的物理块数组int findExist(int curpage);/查找物理块中是否有该页面int findSpace(); /查找是否有空闲物理块int findReplace(); /查找应予置换的页面void display(); /显示置换过程void zhiling(); /产生 320 条指令,显示并存储到 temp320,并调度页号队列void LFU(); /LFU 算法3 运行环境软件:Windows 98 及以上操作系统,Microsoft Visu

7、al C+ 6.0 版本硬件: 512M CPU 内存及以上的计算机4 开发工具和编程语言开发工具:Microsoft Visual C+ 6.0编程语言:C 语言5 详细设计(1)产生 320 条指令,显示并存储到 temp320,并调度页号队列320 条随即指令的产生规则如下: 在0,319的指令地址之间随机选取一起点 m; 顺序执行一条指令,即执行地址为 m+1 的指令; 在前地址0,m+1中随机选取一条指令并执行,该指令的地址为 m; 顺序执行一条指令,其地址为 m+1 的指令; 在后地址m+2,319中随机选取一条指令并执行; 重复上述步骤,直到执行 320 次指令。代码如下:voi

8、d zhiling()int i;srand(int)time(NULL); 产生随机数必须调用printf(“随机产生第一条指令号(0320):“);num=rand()%320; 产生第一条随机指令6printf(“%d“,num);printf(“nnt 按照要求产生 320 个随机数:“);printf(“n*n“);for(i=0;i#include#include#include#define Bsize 4struct BLOCK /声明物理块类型int pagenum; /页号int use; /最近使用次数;int num=0; /记录指令的序号int n=0; /记录缺页的

9、次数static int temp320; /用来存储 320 条指令struct BLOCK block4; /大小为 4 的物理块数组/*/int findExist(int curpage); /查找物理块中是否有该页面int findSpace(); /查找是否有空闲物理块int findReplace(); /查找应予置换的页面void display(); /显示置换过程void zhiling(); /产生 320 条指令,显示并存储到 temp320,并调度页号队列void LFU(); /LFU 算法/*/int findExist(int curpage)/查找物理块中是否

10、有该页面int i;for(i=0; iBsize; i+)if(blocki.pagenum = curpage )return i;/检测到内存中有该页面,返回 block 中的位置return -1;/*/17int findSpace()/查找是否有空闲物理块int i;for(i=0; iBsize; i+)if(blocki.pagenum = -1)return i;/找到空闲的 block,返回 block 中的位置return -1;/*/int findReplace()/查找应予置换的页面int i,min=0;for(i=0;iBsize;i+)if(blocki.us

11、eblockmin.use)min=i;/找到应予置换页面,返回 BLOCK 中位置return min;/*/void display()/显示置换过程int i;for(i=0; iBsize; i+)if(blocki.pagenum != -1)printf(“ %02d“,blocki.pagenum);printf(“n“);/*/18void zhiling()/产生 320 条指令,显示并存储到 temp320,并调度页号队列int i;srand(int)time(NULL);printf(“随机产生第一条指令号(0320):“);num=rand()%320;printf(

12、“%d“,num);printf(“nnt 按照要求产生 320 个随机数:“);printf(“n*n“);for(i=0;i320;i=i+5) tempi=num;tempi+1=num+1;tempi+2=rand()%(num+1);tempi+3=tempi+2+1;tempi+4=tempi+3+1+rand()%(320-tempi+3-1);num=rand()%320;for(i=0;i320;i+)printf(“ %03d“,tempi);if(i+1)%10=0)printf(“n“);printf(“nn 对应的调用页面队列“);printf(“n*n“);for(

13、i=0;i320;i+)printf(“ %02d“,tempi/10);if(i+1)%10=0)printf(“n“);/*/void LFU ()int exist,space,position ;int page,i,j,k;double pr;for(i=0;i320;i+)num=tempi; /指令记录号page=num/10; /页号exist = findExist(page); /是否有记录19if(exist=-1) /没有space = findSpace(); /判断是否为空的标记if(space!= -1) /有空盘块blockspace.pagenum=page;

14、 display();/ printf(“ 发生缺页n“);n=n+1;else /没有空盘块for(k=0;kBsize;k+)for(j=i;ji+64;j+)/自行设定的访问时间段if(blockk.pagenum=tempj/10)/有使用记录blockk.use+; /记录使用次数/display();/printf(“n“);else/最近未使用;position=findReplace(); blockposition.pagenum=page; display();/ printf(“ 发生缺页n“);n+;pr=n/320.0;printf(“缺页次数:%d n“,n);printf(“缺页率:%.3lfn“,pr);printf(“命中率:%.3lfn“,1-pr);/*/void main() int i;for(i=0;iBsize;i+) /初始化blocki.pagenum=-1;blocki.use=0;20zhiling();printf(“nn 最少使用算法 LFU 实现:n“);printf(“*n“);LFU ();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报