操作系统课程设计存储管理

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

河南城建学院

《操作系统》课程设计说明书

设计题目:存储管理

专业:计算机科学与技术

指导教师:邵国金、薛冰、郭猛

班级:0814102

学号:081410219

姓名:李二萌

同组人:杨森林、杨鹏飞、王伟超

计算机科学与工程系

2013年01 月10 日

前言

本模拟系统实现了先进先出页面淘汰算法(FIFO)、最近最少使用LRU页面淘汰算法、最近未使用算法NUR、最少访问页面算法LFU和最佳淘汰算法OPT。同时系统可以随意设置当前分配给作业的物理块数。

系统运行时,任意输入一个页面访问序列,可以设定不同的页面置换算法和物理块数,输出其页面淘汰的情况,计算其缺页次数和缺页率。系统结束后,比较同一个页面访问序列,可以得出在不同的页面置换算法和物理块数的情况下,其产生的缺页次数和缺页率。

使用FIFO算法,由于测试数据相同的页面比较少,所以采用FIFO算法时,需要置换的页面多,比较繁琐,没有优化效果,所以FIFO算法性能不好。使用LRU的算法,此组数据显示LRU的算法使用比较繁琐,总的来说,NUR、LFU、LRU 算法介于FIFO和Optimial之间。通过系统模拟得出,optimal算法的性能高,LRU、NUR、LRU算法的性能次之,FIFO的算法性能最差,较少应用;由于optimal 算法在实际上难于实现,所以实际应用一般用LRU算法。

本设计的目的是是熟悉存储管理的设计方法,加深对请求分页式存储管理的认识。设计中用到了数据结构中的相关知识,链表的操作,通过本设计可以加深的数据结构的理解。设计代码语言用到的是C语言,使用起来比较方便,可以在虚拟机和VC上直接运行。

目录

目录 (3)

一、系统环境 (4)

1.1、硬件环境 (4)

1.2、软件环境 (4)

二、设计目的 (5)

三、总体设计 (6)

3.1、程序设计组成框图 (6)

3.2、流程图 (7)

四、详细设计 (11)

4.1、数据结构 (11)

4.1.1页面类型 (11)

4.1.2页面控制结构 (11)

4.2.函数定义 (12)

4.3.变量定义 (12)

4.4.算法分析 (12)

五、调试与测试 (14)

5.1、调试方法 (14)

5.2、测试结果的分析与讨论 (14)

六、设计中遇到的问题 (15)

七、源程序清单 (16)

八、总结,收获与体会 (25)

九、参考文献 (26)

一、系统环境

1.1、硬件环境

PC机一台,内存,2.0GHZ主频

1.2、软件环境

设计和实验将Windows环境下,gcc和虚拟机软件VMWare。

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

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

①50%的指令是顺序执行的;②25%的指令是均匀分布在前地址部分;③25%的指令是均匀分布在后地址部分。

具体的实施方法是:①在[0,319]的指令地址之间随机选取一起点m;②顺序执行一条指令,即执行地址为m+l的指令;③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;④顺序执行一条指令,其地址为m’+1;

⑤在后地址[m’+2,319]中随机选取一条指令并执行;⑥重复上述步骤①~⑤,直到执行320次指令。

(2)将指令序列变换成为页地址流。设:①页面大小为1K;②用户内存容量为4页到32页;③用户虚存容量为32K。

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

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

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

………

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

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

(3)计算并输出下述各种算法在不同内存容量下的命中率(要为以下各种算法定义数据结构)。

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

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

③最近最不经常使用算法(NUR/NRU/CLOCK)。

3.1、程序设计组成框图

程序设计组成框图

3.2、流程图

四、详细设计

本程序设计基本按照题目的要求进行。即首先用srand()和rand()函数定义和产生指令序列,然后将指令序列变成相应的页地址流,并针对不同的算法计算出相应的命中率。

4.1、数据结构

4.1.1页面类型

Typedef struct{

Int pn,pfn,count,time;

}pl_type;

其中pn为页号,pfn为面号,count为个周期内访问该页面次数time为访问时间。

4.1.2页面控制结构

pfc_struct{

int pn,pfn;

struct pfc_struct *next;

}

typedef struct pfc_struct pfc_type;

pfc_type pfc[xy],*free_head,*busy_head;

pfc_type *busy_tail;

其中:

pfc[xy]定义用户进程虚页控制结构,

*free_head为空页面头的指针,

*busy_head为忙页面头的指针,

*busy_tail为忙页面尾的指针。

相关文档
最新文档