您好,欢迎来到锐游网。
搜索
您的当前位置:首页操作系统页置换实验报告

操作系统页置换实验报告

来源:锐游网
实验四页置换

一、 实验目的:

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

二、 实验环境说明:

此实验在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的缺页率小,相对比较稳定。并且在页帧数增大的时候,每一个算法相应的缺页率都有所降低。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top