请求页式管理缺页中断模拟设计--+LRU、随机淘汰算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号:0120610340231

课程设计

题目请求页式管理缺页中断模拟设计--

LRU、随机淘汰算法

学院计算机学院

专业计算机科学与技术

班级计算机0602

姓名朱林

指导教师王红霞

2009 年01 月08 日

课程设计任务书

学生姓名:朱林专业班级:计算机0602

指导教师:王红霞工作单位:计算机科学与技术学院题目:请求页式管理缺页中断模拟设计-- LRU、随机淘汰算法

初始条件:

1.预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会和了解缺页和页面置换的具体实施方法。

2.实践准备:掌握一种计算机高级语言的使用。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.实现指定淘汰算法。能够处理以下的情形:

⑴能够输入给作业分配的内存块数;

⑵能够输入给定的页面,并计算发生缺页的次数以及缺页率;

⑶缺页时,如果发生页面置换,输出淘汰的页号。

2.设计报告内容应说明:

⑴需求分析;

⑵功能设计(数据结构及模块说明);

⑶开发平台及源程序的主要部分;

⑷测试用例,运行结果与运行情况分析;

⑸自我评价与总结:

错误!未找到引用源。)你认为你完成的设计哪些地方做得比较好或比较出色;

错误!未找到引用源。)什么地方做得不太好,以后如何改正;

错误!未找到引用源。)从本设计得到的收获(在编写,调试,执行过程中的经验和

教训);

错误!未找到引用源。)完成本题是否有其他方法(如果有,简要说明该方法);

错误!未找到引用源。)对实验题的评价和改进意见,请你推荐设计题目。

时间安排:

设计安排一周:周1、周2:完成程序分析及设计。

周2、周3:完成程序调试及测试。

周4、周5:验收、撰写课程设计报告。

(注意事项:严禁抄袭,一旦发现,一律按0分记)

指导教师签名:年月日

系主任(或责任教师)签名:年月日

开始

请求页面序

列结束?

内存块已满?

利用替换算法,选择内存块中应该被替换的页面进行替换,修改页表

选择将要调入页面

放入未被占用的内存块中,修改页

N

Y

N

结束

Y 页面在内存中?

N Y

请求页式管理缺页中段模拟设计 ——LRU 、随机淘汰算法

1需求分析

用一种计算机高级语言来实现请求页式管理缺页中段模拟设计的LRU 和随机淘汰算

法,设计要求如下:

⑴ 能够输入给作业分配的内存块数;

⑵ 能够输入给定的页面,并计算发生缺页的次数以及缺页率; ⑶ 缺页时,如果发生页面置换,输出淘汰的页号。 请求分页流程图:

2功能设计

2.1数据结构

(1)用结构体定义页表表项:

struct page

{

int page_num; //页面号

int memory_num; //页面对应的内存物理块号

int flag; //状态标志,判断页面是否在内存

};

(2)算法中涉及到的主要变量:

int page_size; //给定的页面数

int memory_size; //给定的内存物理块数

int *page_array, //存放页面的输入序列

int *memory; //存放内存物理块的序列

int lacktime; //缺页次数

int page; //当前页面号

int *save;//保存被淘汰的页面号(随机算法中)

int *change_page; //保存被淘汰的页面号(LRU算法中)

int *weight; //记录内存中页面的存在次数(LRU算法中)

bool in; //标志页面是否在内存中(LRU算法中)

2.2模块说明

(3)LRU淘汰算法

void LRU()

{

用一个整形指针change_page保存被淘汰的页面号;

用一个整形指针weight记录内存中各页面的存在次数;

a.若当前页在内存中,置in的值为1;

b.若当前页不在内存中且内存已满,lacktime加1,比较内存中的页面

的weight值,weight值最大的那个页面即为将要被淘汰的页,然后将

当前页装入内存,并修改当前页和被淘汰页的页表内容;

c.若当前页不在内存中且内存未满,lacktime加1,将此页装入内存,

并修改页表表项的内容;

输出lacktime的值,缺页率和被淘汰的页面号;

}

(4)随机淘汰算法

void random()

{

用一个整形指针save保存被淘汰的页面号;

do

{

a.若当前页面在内存中,输出相关信息;

b.若当前页面不在内存中,lacktime加1,将此页面装入内存,并修

改页表表项的相应内容;

}while(内存未满)

当内存已满时:

a.若当前页面在内存中,输出相关信息;

b.若当前页面不在内存中,lacktime加1,随机淘汰内存中的一个页

面,将被淘汰的页面号保存在save中,并修改被淘汰和当前页面

在页表中的相应内容;

输出lacktime的值,缺页率和被淘汰的页面号;

}

3开发平台及源程序主要部分

3.1开发平台

(1)使用系统:Windows XP

(2)使用语言:C++

(3)开发工具:Visual C++ 6.0

相关文档
最新文档