东华大学操作系统存储管理实验报告

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

东华大学计算机学院

操作系统实验报告

实验名称:存储管理问题

姓名: 姜元杰

学号:111310228

班ﻩﻩ级:计算机1102

指导老师: 李继云

报告日期:2013/11 ﻩ/2

一、实验概述

1.实验目标

存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页

面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的

页面置换算法。

2.实验要求

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

生成:

●50%的指令是顺序执行的;

●25%的指令是均匀分布在前地址部分。

●25%的指令是均匀分布在后地址部分。

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

●页面大小=10条指令

●4页<=用户内存容量<=32页;

●用户虚存容量= 32页;

●在用户虚存中,按每K存放10条指令排列虚存地址

3)计算并输出下述各种算法在不同内存容量下的命中率。

●先进先出的算法(FIFO);

●最近最少使用算法(LRU);

●最佳淘汰算法(OPT);

●命中率=1-页面失效次数/页地址流长度;

输出以表结构输出,行头是页码,列头是对应替换算法。在本实验中,

页地址流长度为320,页面失效次数为每次访问相应指令时,该指

令所对应的页不在内存的次数。

二、实验内容

1.设计思路

总体思路:

设计存储管理类(class StorageManagemen),封装FIFO,LRU,OPT算

法实现函数与各自所需公共或个体数据机构和公共代码部分,实现“TOP-DOWN”

的程序设计思想,增强代码结构性和可读性。

1)先进先出的算法(FIFO):FIFO是最简单的页置换算法,FIFO的页置

换的算法为每个页记录着该页调入内存的时间。当必须置换一页时,将选

择最旧的页。注意并不需要记录调入一页的确切时间,可以创建一个F

IFO队列来管理内存中的所有页。队列中的首页将被置换。当需要调入

页时,将它加入到队列的尾部。FIFO的页置换算法很好理解和实现,但是,

其性能并不是很好。所替代的页可能是很久以前使用的、现已不再使用

的初始化模块,另一方面,所替代的页可能包含一个以前初始化的并且不

断使用的常用变量。

2)最近最少使用算法(LRU):选择最近最长时间未访问过的页面予以淘汰,

默认过去一段时间内未访问过的页面,在最近的将来可能也不会被访问。

本实验实现算法通过为每个页面设置一个访问字段,用来记录页面自上

次被访问以来所经历的时间,淘汰页面时选择现有页面中值最大的予以

淘汰。尽管各类参考书声明LRU算法为堆栈类算法,但本实验通过优先

队列完全可以实现。

3)最佳淘汰算法(OPT):最佳置换算法所选择的被淘汰页面将是以后永

不使用,或者是在最长时间内不再被访问的页面,这样可以保证获得最

低的缺页率。本实验实现算法通过为每个页面设置一个CPU使用“间隔”

——即表示CPU将在未处理的页面序列中第几步处理到该页面,如果页

面不再被CPU处理,赋值为极大值(INT_MAX),淘汰页面时选择现有

页面中值最大的予以淘汰。本实验同LRU一样,通过优先队列实现。2.主要数据结构

1)公共部分:

class StorageManagement:存储管理类,封装所有算法。

◆const int MAX_OP_NUM:操作页面最大数,默认320

◆constint MAX_MEMORY_PAGE:用户内存存储物理块数最大值,默

认32

◆int Page_OP[MAX_OP_NUM]:访问页面序列,随机生成ﻩ

◆doubleMiss:每次访问相应指令时,该指令所对应的页不在内存的次数

◆double Total:页面置换次数

◆int TMAX_MEMEORY_PAGE:用户内存存储物理块数

◆boolisEmpty:内存是否占满

2)先进先出的算法(FIFO):

◆queueq:内存存储队列,先进先出

3)最近最少使用算法(LRU):

◆structLpage:

◆LpagelPage[MAX_MEMORY_PAGE]:FIFOLRU进程页面

◆priority_queueq:内存存储优先队列,最近使用次数大

者优先级高

◆queue qq:LRU中用于修改最近使用时间函数的临时队列

4)最佳淘汰算法(OPT):

◆struct Opage:

◆Opage oPage[MAX_MEMORY_PAGE] :OPT进程页面

◆priority_queue<Opage>q:内存存储优先队列,CPU使用间隔大者优

先级高

◆queue<Opage>qq:OPT中用于修改使用间隔的临时队列

3.主要代码结构

1)公共部分:

◆int main():Main函数菜单界面

◆voidInitial(int n):用于初始化各算法参数的函数

◆void Output(int n):控制输出函数

2)最近最少使用算法(LRU):

◆void alterLateUse(priority_queue<Lpage> &q,int Pos):

LRU中用于修改内存中页面最近使用时间

3)最佳淘汰算法(OPT):

◆alterDist(priority_queue<Opage>&q, int n, int *Page_OP):

OPT中用于修改内存中页面使用间隔

4.主要代码段分析(加粗下划线部分为核心)

1)公共部分:

按照实验要求,随机生成320条随机数指令流,同时转换为页地址流

(分析部分见注释)

相关文档
最新文档