内存管理(操作系统)操作系统课程设计

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

河南城建学院

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

设计题目:存储管理

专业:计算机科学与技术

指导教师:邵国金

班级:0814121

学号:081412112

姓名:

同组人:

计算机科学与工程学院

2015 年1 月9日

前言

本课程设计是编制页面置换算法FIFO、LRU、LFU、NUR和OPT的模拟程序,并模拟其在内存的分配过程。同时根据页面走向,分别采用FIFO、LRU、LFU、NUR和OPT算法进行页面置换,统计命中率;同时系统可以随意设置当前分配给作业的物理块数。

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

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

本程序实现了操作系统中页式虚拟存储管理中缺页中断理想型淘汰算法,该算法在访问串中将来再也不出现的或是在离当前最远的位置上出现的页淘汰掉。这样,淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。该程序能按要求随机确定内存大小,随机产生页面数,进程数,每个进程的页数,给进程分配的页数等,然后运用理想型淘汰算法对每个进程进行计算缺页数,缺页率,被淘汰的序列等功能。

目录

一.系统环境 (1)

1.1硬件环境 (1)

1.2软件环境 (1)

二.设计目的 (2)

三.总体设计 (3)

3.1程序设计组成框图 (3)

3.2流程图 (4)

四.详细设计 (7)

4.1模块功能说明 (7)

4.11数据结构 (7)

4.12函数定义 (8)

4.13变量定义 (8)

4.2算法分析 (8)

五.调试与测试 (10)

5.1调试方法 (10)

5.11使用Vi编译程序 (10)

5.12运行程序 (12)

5.2结果分析与讨论 (13)

5.3测试问题及采取措施 (13)

六.源程序 (14)

七.心得体会 (23)

八.参考文献 (24)

一.系统环境

1.1硬件环境

PC机一台,0.99G内存,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)。

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

在本设计中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

(4)关于随机数产生办法,Linux/UNIX系统提供函数srand()和rand(),分别进行初始化和产生随机数。例如:srand()语句可初始化一个随机数:a[0]=10*rand()/32767*319+1,

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

………

语句可用来产生a[0]、a[1]、…中的随机数。

3.1程序设计组成框图

系统分为4个子模块:初始化模块,FIFO、LRU、LFU、NUR和OPT的五个算法模块。

初始化模块:initialize( )初始化函数,给每个相关的页面赋值。

FIFO算法模块:计算使用FIFO算法时的命中率。

LRU算法模块:计算使用LRU算法时的命中率。

LFU算法模块:计算使用OPT算法时的命中率。

NUR算法模块:计算使用LFU算法时的命中率。

OPT算法模块:计算使用NUR算法时的命中率。

相关文档
最新文档