存储管理模拟实现

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

一、实验目的

存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。

二、实验容

编程实现页面置换算法,要求输出页面的置换过程,具体可以编程实现OPT、FIFO和LRU算法。

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

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

②25%的指令是均匀分布在前地址部分;

③25%的指令是均匀分布在后地址部分;

#具体的实施方法是:

A.在[0,319]的指令地址之间随机选区一起点M;

B.顺序执行一条指令,即执行地址为M+1的指令;

C.在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’;

D.顺序执行一条指令,其地址为M’+1;

E.在后地址[M’+2,319]中随机选取一条指令并执行;

F.重复A—E,直到执行320次指令。

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

设:(1)页面大小为1K;

(2)用户存容量为4页到32页;

(3)用户虚存容量为32K。

在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条—第9条指令为第0页(对应虚存地址为[0,9]);

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

。。。。。。。。。。。。。。。。。。。。。

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

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

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

A.FIFO先进先出的算法

B.LRU最近最少使用算法

C.LFU最少访问页面算法

三、实验要求

1、需写出设计说明;

2、设计实现代码及说明

3、运行结果;

四、主要实验步骤

1、分析算法结构;

画出算法的流程图,即设计说明;

根据画出的流程图使用C语言编写相应的代码(代码过长,放到最后);

程序主要由main函数和以下几个函数组成:

void initialization();初始化存数据

void FIFO();FIFO先进先出算法;void LRU();LRU最久未使用算法;void LFU();LFU最近最久未使用算法:

流程图如下:

页面置换算法整体结构

FIFO页面置换算法

LRU页面置换算法

LFU页面置换算法2、设计说明及源代码

FIFO算法设计说明:按照所要求的产生随机指令序列,存放在order[320]这个数组中。

通过循环产生这些随机指令,每产生一条都要进行下列判断:是否和存中即mem

_volume[4]中存放的页面相同,如果相同则不做任何操作,如果不相同,则产生缺页,相应的缺页次数加一,按照fcfs将最先进入存的页数淘汰,并将该页写到存中去。

重复上面的操作直到完成这320条指令。

源代码:

// 储存管理.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

return 0;

}

#include

#include

#include

#define N 5 //总共运行的次数

void main()

{

int order[320],mem_volume[4]={100,100,100,100};

//使得mem_volume[]的值大于100>32,这样我们便可使其在开始就产生缺页

//定义add为缺页次数sign作为标识符判断所调页数是否在存中

相关文档
最新文档