操作系统-存储器管理-实验报告.docx
实验二、存储器管理一、实验目的理解各类置换算法的原理和虚拟存储器管理的方法。二、实验内容编程实现LRU算法或CLOCK/改进算法等置换算法(二选一),模拟实现虚拟存储器的地址变 换过程。实验步骤:理解LRU或CLOCK改进算法等置换算法;设计与算法相关的数据结构,如:LRU的堆栈或CLOCK改进算法中的循环结构;按照最多5块的内存分配情况,编程实现所选算法,动态输入访问内存的块号序列,输出置 换结果;测试:输入合法、非法的访问序列数据,检查程序的正确性。理解虚拟存储器的地址变换过程;设计用于模拟快表、页表、地址变换所用的寄存器的数据结构;编制页表的初始信息文件,举例说明文件中具有的信息:共有5块,每块的状态、在内存和 外存的起始地址等。编程实现虚拟存储器地址变换算法程序,动态输入所要访问的逻辑地址,变换过程文字描述 以及变换后的物理地址;测试:输入有效、无效地址,测试程序的正确性和错误处理能力。三、实验环境Windows 2000; Microsoft Visual C+ 6. 0四、程序源码与运行结果LRU算法代码#include<iostream>using namespace std;int size;int *w;定义一个动态数组struct mem|int num;int count;memBlock3 = 0, 0, 0, 0, 0, 0);void LRU()(for( int i = 0; i < size; i+ )(int maxCount = memBlock0.count;int maxPos = 0;int j = 0;bool bFind = false;for( j = 0; j < 3; j+ )(/标记出count值最大的位置 if( maxCount < memBlockj. count ) (maxCount = memBlockj.count; maxPos = j;)/将所有的count值都+1 memBlockj. count+;/如果命中,将其count值置为0 if( wi = memBlockj. num ) (memBlockj.count = 0;bFind = true;/未命中,将count最大的拿来替换 if( !bFind )(memBlockmaxPos. num = wi; memBlockmaxPos. count = 0;)for(j = 0; j < 3; j+) 输出 cout << memBlockj. num << ; cout << endl;int main() 主函数cout<<请输入需访问的页面数量:,<<endl;cin>>size;w 二 new intsize;cout<请输入需要访问的页面<endl;for (int a=0;a<size;a+)cin>>wa;输入数组cout<<endl«,/ (LRU),z<<endl;LRUO;return 0;运行结果请输入需访问的页面数量:11请输入需要访问的页面4?0?1012126<LRU>4 0 04 7 04 7 04 7 017 017 017 012 012 012 012 6Press any key to continue备注:输入数据为P152 LRU置换算法 所用数据计算机操作系统(第三版)西安电子科技大学出版社