操作系统页置换实验报告

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

实验四页置换

一、实验目的:

通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

二、实验环境说明:

此实验在MacOS 10.9 的Xcode软件下编译运行。

三、实验内容:

写一个程序来实现本章中介绍的FIFO和LRU页置换算法。首先,产生一个随机的页面引用序列,页面数从0~9。将这个序列应用到每个算法并记录发生的页错误的次数。实现这个算法时,要将页帧的数量设置为可变(从1~7)。

假设使用请求调页。

四、程序设计说明:

1.全局变量:

定义bsize为页帧的数量,可以手动修改,初始值为4。

定义psize为进程请求次数,可以手动修改,初始值为16。

定义Page结构体,内含页面编号和调入时间。

2.初始化缓冲区和物理内存:

3.获得随机序列(0~9),共psize个数:

4.搜索空内存,便于页的调入:

5.搜索是否有相同的进程已在内存中,有则不缺页,不需要置换:

6.每次应用完一个算法后清空内存和缓冲区,便于其他算法的页置换:

7.FIFO算法:

FIFO页置换算法为每个页记录着该页调入内存的时间。当必须置换一页时,将选择最旧的页。FIFO算法性能并不总是很好,可能会有Belady 异常的出现。

8.获得置入时间最早的页面,用于FIFO算法:

9.判断页面是否相同:

10.LRU算法:

LRU页置换算法为每个页关联该页上次使用的时间。当必须置换一页时,LRU选择最长时间没有使用的页。这种策略为向后看最优页置换算法。

11.主目录:

12.主函数:

五、运行结果:

1.运行程序显示主目录界面:

2.选择操作1,生成psize(此处为16)个随机数(0~9)序列:

3.选择操作2,执行FIFO算法,并输出运行结果:

4.选择操作3,执行LRU算法,并输出运行结果:

5.选择操作4,输出end,结束程序:

六、不同页帧数比较:

1. 3 frames:

2. 4 frames:

3. 5 frames:

七、 源代码:

见pageReplacement.c 附件。

八、 实验心得:

本次实验相对比较简单,因为大体的算法上课时老师已讲得很明白,只是一些细节方面需要注意。比如FIFO 算法需要有一个参数来记录调入时间、LRU 算法需要参数不光记录调入时间,还有最近一次使用的时间等等。总体来说还算比较顺利的完成。在比较两种算法的时候,发现LRU 大多数情况下比FIFO 的缺页率小,相对比较稳定。并且在页帧数增大的时候,每一个算法相应的缺页率都有所降低。

相关文档
最新文档