实验报告
⒈ 实验题目
模拟分页式虚拟存储管理实验。
2.实验要求
编写一段程序来模拟页面置换算法。要求能分别显示最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法的置换过程。
3. 实验目的
通过本实验帮助学生理解虚拟存储器的工作方法。了解分页式存储管理里中各页面置换算法是怎样实现的,各算法有怎样的优缺点。
⒋ 实验原理分析
⑴页面置换算法是在分页存储管理方式中为了合理的将进程运行所需的页面调入内存而产生的算法。一个好的页面转换算法,应具有较低的页面更换频率。最常见的页面置换算法有最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法。
⑵算法的说明
最佳置换算法:选择以后永不使用或是在最长时间内不再被访问的页面作为被淘汰的页面。这种算法通常可保证获得最低的缺页率,但因为内存中哪个页面是以后永不使用的是无法预知的,所以该算法是无法实现的。
先进先出页面置换算法:选择内存中驻留时间最长的页面作为被淘汰的页面。该算法实现简单,只需将调入内存中的页面链成一个队列,并设置一个指针指向最老的页面即可。
最近最久未使用置换算法:选择最近最久未使用的页面作为被淘汰的页面。该算法需要为每个页面设置一个访问字段用来记录页面上次被访问的时间,通过这个时间来决定淘汰哪一个页面。
⑶主要变量及函数说明如表1所示
表1 主要变量及函数说明表
PRA(void) |
初始化 |
int findSpace(void) |
查找是否有空闲内存 |
int findExist(int curpage) |
查找内存中是否有该页面 |
int findReplace(void) |
查找应予置换的页面 |
void display(void) |
显示 |
void FIFO(void) |
FIFO算法 |
void LRU(void) |
LRU算法 |
void Optimal(void) |
OPTIMAL算法 |
void BlockClear(void) |
BLOCK恢复 |
struct pageInfor * block |
物理块 |
struct pageInfor * page |
页面号串 |
5.实验代码清单
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
struct Pro
{
int num; //页号
int time; //等待时间,LRU算法会用到这个属性
}; //作业页面集