操作系统课程设计页面置换算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统
课程设计说明书题目: 页面置换算法程序设计
院系:计算机科学与工程
专业班级:
学号:
学生姓名:
指导教师:
2014年 11月 21 日
2014年11月21日
安徽理工大学课程设计(论文)成绩评定表
目录
1 问题描述 (1)
2 需求分析 (1)
3 概要设计 (1)
3.1 设计思路 (1)
3.2 功能模块设计 (2)
3.3 算法流程图 (2)
4 详细设计 (4)
4.1 相关知识 (4)
4.2 置换算法函数代码设计 (4)
4.3 辅助函数代码设计 (10)
5 调试分析 (12)
6 测试结果 (13)
7 设计体会 (15)
参考文献 (15)
1 问题描述
编写程序实现:
(1)先进先出页面置换算法(FIFO)
(2)最近最久未使用页面置换算法(LRU)
(3)最佳置换页面置换算法(OPT)
设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。演示页面置换的三种算法。通过随机数产生一个指令序列,将指令序列转换成为页地址流。计算并输出各种算法在不同内存容量下的命中率。
2 需求分析
在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
在进程运行过程中,若其所要访问的页面不在内存需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,所以需要根据一定的算法来确定。
常用的算法有先进先出置换算法(FIFO)、最近最久未使用置换算法(LRU)和最佳置换算法(OPT),该设计是在VC++6.0环境下用上述三种算法来实现页面置换算法的模拟程序,然后计算访问命中率,并测试结果。
3 概要设计
3.1 设计思路
选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换: FIFO基本思想:是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。
或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。
LRU基本思想:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。
OPT基本思想:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组next[mSIZE]记录物理块中对应页面的最后访问时间。每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。
3.2 功能模块设计
(1)置换算法函数:
void FIFO( ):先进先出页面置换算法
void LRU( ):最近最久未使用置换算法
void OPT( ):最佳置换算法
(2)辅助函数:
void output(int t):计算输出
void showInfo( ):显示信息
void download( ):载入数据
void mDelay(int Delay):设置延迟
void compute( ):计算过程延迟
3.3 算法流程图
算法流程图如图1所示。
图1 算法流程图
4 详细设计
4.1 相关知识
(1)虚拟存储器的引入:
局部性原理:程序在执行时在一较短时间内仅限于某个部分;相应的,它所访问的存储空间也局限于某个区域,它主要表现在以下两个方面:时间局限性和空间局限性。
(2)虚拟存储器的定义:
虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
(3)虚拟存储器的实现方式:
分页请求系统,它是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页面形式虚拟存储系统。
请求分段系统,它是在分段系统的基础上,增加了请求调段及分段置换功能后,所形成的段式虚拟存储系统。
(4)页面分配:
平均分配算法,是将系统中所有可供分配的物理块,平均分配给各个进程。按比例分配算法,根据进程的大小按比例分配物理块。
考虑优先的分配算法,把内存中可供分配的所有物理块分成两部分:一部分按比例地分配给各进程;另一部分则根据个进程的优先权,适当的增加其相应份额后,分配给各进程。
(5)页面置换算法:
常用的页面置换算法有FIFO、LRU、OPT等。
4.2 置换算法函数代码设计
(1)先进先出页面置换算法设计
算法思想:借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。
其功能实现代码如下:
void FIFO( )
{
int memery[10]={0};
int time[10]={0};/*记录进入物理块的时间*/
int i,j,k,m;
int max=0;/*记录换出页*/
int count=0;/*记录置换次数*/
/*前mSIZE个数直接放入*/
for(i=0;i memery[i]=page[i]; time[i]=i; for(j=0;j temp[i][j]=memery[j]; } for(i=mSIZE;i /*判断新页面号是否在物理块中*/ for(j=0,k=0;j if(memery[j]!=page[i]) k++; } if(k==mSIZE)/*如果不在物理块中*/ { count++;/*计算换出页*/ max=time[0]