操作系统页置换实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 的缺页率小,相对比较稳定。并且在页帧数增大的时候,每一个算法相应的缺页率都有所降低。