操作系统课程设计---页面置换算法的模拟

操作系统课程设计---页面置换算法的模拟

ID:11337856

大小:208.50 KB

页数:16页

时间:2018-07-11

操作系统课程设计---页面置换算法的模拟_第1页
操作系统课程设计---页面置换算法的模拟_第2页
操作系统课程设计---页面置换算法的模拟_第3页
操作系统课程设计---页面置换算法的模拟_第4页
操作系统课程设计---页面置换算法的模拟_第5页
资源描述:

《操作系统课程设计---页面置换算法的模拟》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、操作系统课程设计报告专业网络工程专业学生姓名班级学号指导教师完成日期2012年2月22日计算机科学与技术学院16目录一、设计目的3二、设计内容3(1)概述3(2)设计原理3(3)详细设计及编码4(4)运行结果分析12(5)设计小结15(6)参考文献1616题目:页面置换算法的模拟实现一一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。增加对linux系统的认识和基本的命令语句。二、设计内容(1)

2、概述设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率。用C语言实现,要求设计主界面以灵活选择某算法,且以下算法都要实现1、先进先出算法(FIFO);2、最近最久未使用算法(LRU)(2)设计原理存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影响。页面失效次数为每次访问相应指令时

3、,该指令所对应的页不在内存中的次数。1、先进先出算法(FIFO);如果内存中含有该页面则不用淘汰页面。而内存中不存在该页面先进先出的算法主要是先进入栈的先后进行叶面淘汰算法,及通过计入页面失效的次数而计算出命中率。162、最近最久未使用算法(LRU);如果内存中含有该页面则不用淘汰页面。而内存中不存在该页面最近最久未被使用时在同一时间内优先淘汰在内存中最近最久未被使用的页面淘汰掉。通过计入页面失效的次数而计算出命中率。(3)详细设计及编码一、实现该功能的程序流程图如下:页面置换算法的中流程图:开始随机生成指令序列产生页面地址流S<

4、0

5、

6、S>319结束否是FIFO页面置换算法LRU页面置换算法结束161、FIFO页面置换算法的流程图:初始化内存页面计算结果FIFO算法页面是否失效加入新页面,缺页次数加1是输出结果否删除最先进的一页2、LRU页面置换算法初始化内存页面计算结果LRU页面是否失效加入新页面,缺页次数加1,是输出结果否删除time最大的页面,未被访问time加1时间time为016二、先进先出(FIFO)和最近最久未使用算法(LRU)的页面置换算法代码如下:#include#include#include

7、me.h>//windows下面运行则用#include#defineRRUE1#defineFALSE0#defineINVALID-1#defineNULL0#definetotal_instruction320//指令#definetotal_vp32//页面typedefstruct{intpn;intpfn;intcounter;inttime;}pl_type;pl_typepl[32];//构造页面类型typedefstructpfc_struct{intpn;intpfn;structpfc_

8、struct*next;}pfc_type;pfc_typepfc[32];//页面控制结构pfc_type*freepf_head;16pfc_type*busypf_head;pfc_type*busypf_tail;intdiseffect;inta[total_instruction];intpage[total_instruction];intoffset[total_instruction];voidinitialize();//初始化函数,给页面赋初始值voidFIFO(inttotal_pf);//先进先出页面置换

9、算法voidLRU(inttotal_pf);//最近最久未被使用页面置换算法voidmain(){ints,i;srand(10*getpid());/*由于每次运行时进程号不同,顾客用来作为初始化随机数队列的“种子”。*/s=(int)((float)319*rand()/32767/32767/2)+1;//随机命令地址for(i=0;i

10、

11、s>319){printf("Wheni==%d,Error,s==%d",i,s);exit(0);}

12、a[i]=s;//任选一指令访问点ma[i+1]=a[i]+1;//顺序执行一条指令a[i+2]=(int)((float)a[i]*rand()/32767/32767/2);//执行前地址指令m'a[i+3]=a[i+2]+1;//顺序执行一条

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。