实验三 模拟操作系统的页面置换

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

院系:计算机学院

实验课程:操作系统

实验项目:模拟操作系统的页面置换

指导老师:陈红英老师

开课时间:2011 ~ 2012年度第 2学期

专业:网络工程

班级:10级

学生:yuth

学号:*

华南师范大学教务处

一、综合设计实验题目

模拟操作系统的页面置换

1、采用一种熟悉的语言,如C、PASCAL 或C++ 等,编制程序,最好关键代码采用C/C++ ,界面设计可采用其它自己喜欢的语言。

2、模拟操作系统采用OPT、FIFO 和LRU算法进行页面置换的过程。

3、设程序中地址范围为0 到32767 ,采用随机数生成256 个指令地址,满足50%的地址是顺序执行,25%向前跳,25% 向后跳。

为满足上述条件,可采取下列方法:

设d0=10000,第n个指令地址为d n,第n+1 个指令地址为d n+1,n的取值范围为0 到255。每次生成一个 1 到1024范围内的随机数a,如果a落在1 到512 范围内,则d n+1=d n+1。如果a落在513 到768范围内,则设置d n+1为1 到d n 范围内一个随机数。如果a落在769 到1024范围内,则设置d n+1为d n到32767

范围内一个随机数。

例如:srand(); 初始化一个随机函数。

a[0] =10*rand()/32767*255+1;

a[1]=10*rand()/32767*a[0]…语句可用来产生a[0]与a[1]中的随机数。

或采用以下方式:

(1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:

A:50%的指令是顺序执行的

B:25%的指令是均匀分布在前地址部分

C:25%的指令是均匀分布在后地址部分

具体的实施方法是:

A:在[0,319]的指令地址之间随机选取一起点m

B:顺序执行一条指令,即执行地址为m+1的指令

C:在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m'

D:顺序执行一条指令,其地址为m'+1

E:在后地址[m'+2,3 19]中随机选取一条指令并执行

F:重复步骤A-E,直到320次指令

(2)将指令序列变换为页地址流

设:页面大小为1K;

用户内存容量4页到32页;

用户虚存容量为32K。

在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:

第0 条-第9 条指令为第0页(对应虚存地址为[0,9])

第10条-第19条指令为第1页(对应虚存地址为[10,19])

……

第310条-第319条指令为第31页(对应虚存地址为[310,319])

按以上方式,用户指令可组成32页。

4、页面大小的取值范围为1K,2K,4K,8K,16K 。按照页面大小将指令地址转化为页号。对于相邻相同的页号,合并为一个。

5、分配给程序的内存块数取值范围为1 块,2 块,直到程序的页面数。

6、分别采用OPT、FIFO 和LRU算法对页号序列进行调度,计算出对应的缺页中断率。

7、打印出页面大小、分配给程序的内存块数、算法名、对应的缺页中断率。

8、分析页面大小和分配给程序的内存块数对缺页中断率的影响。分析不同

的页面置换算法的调度性能。

二、中文摘要

这次实验是模拟操作系统的页面置换,分别用先进先出算FIFO、最近最久未使用算法LRU和最佳淘汰算法OPT等三种置换算法来管理管理内存块,并打印出页面大小、分配给程序的内存块数、算法名、对应的缺页中断率。最后对不同算法的调度性能。

三、关键词

页面置换 FIFO LRU OPT

四、前言

本实验的目的及要求

1、掌握操作系统的页面置换过程,加深理解页式虚拟存储器的实现原理。

2、掌握用随机数生成满足一定条件的指令地址流的方法。

3、掌握页面置换的模拟方法。

五、实验设计

(一)、需求分析

1、用一种熟悉的语言,如C、PASCAL或C++等,编制程序。

2、分别采用OPT、FIFO和LRU算法对页号序列进行调度。

(二)、设计流程

1、根据实验目标,明确实验的具体任务;

2、编写程序实现页面置换;

3、运行程序,调试;

4、记录并分析实验结果。

(二)、关键技术

根据实验要求,使得50%的指令地址是顺序执行,25%向前跳,25% 向后跳。可采取下列方法:设d0=10000,第n个指令地址为d n,第n+1 个指令地址为d n+1,n的取值范围为0 到255。每次生成一个1 到1024范围内的随机数a,如果a落在1 到512 范围内,则d n+1=d n+1。如果a落在513 到768范围内,则设置d n+1为1 到d n范围内一个随机数。如果a落在769 到1024范围内,则设置d n+1为d n到32767 范围内一个随机数。开一个数组address[]来记录指令地址,另一个数组pagenum[]记录指令地址转换后所在的页,这样就得到原始程序的页面访问序列。然后将相邻相同的页号合并。

(三)详细设计

1、设计算法流程图

2、数据结构

//程序类,指明程序地址范围和指令数

class Program

{

public:

int AddressSize; //(0~AddressSize )

int StructureNum; //指令数

public:

Program(int m,int i)

{

AddressSize=m;

StructureNum=i;

}

};

//内存块节点类

class PhysicsPageNode

{

相关文档
最新文档