操作系统课程设计页面置换算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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]

for(m=2;m

if(time[m]

max=m;

memery[max]=page[i];

time[max]=i;/*记录该页进入物理块的时间*/

相关文档
最新文档