1、课本第九章 21 题 实验ytinrete1实验目的:学习页面置换算法2实验内容Write a program that implements the FIFO and LRU page-replacement algorithms presented in this chapter. First, generate a random page reference string where page numbers range from 09. Apply the random page-reference string to each algorithm and record the num
2、ber of page faults incurred by each algorithm. Implement the replacement algorithms such that the number of page frames can vary from 17. Assume that demand paging is used.写一个程序来实现本章中介绍的 FIFO 和 LRU 页置换算法。首先产生一个随机的页面引用序列,页面数从 09。将这个序列应用到每个算法并记录发生的页错误的次数。实现这个算法时,要将页帧的数量设为可变(从 17) 。假设使用请求调页。3 设计说明FIFO
3、算法:每次请求先查找是否有空块,有则替换,并标记为最晚到达,若没有则从标记中寻找最新到达的块,替换,并更新标记表。标记数字越小,到达时间最早。LRU 算法:每次请求先查找是否有空块,有则替换,并标记为最近使用时间最短者,若没有则从标记中寻找最近使用时间最长者,替换,并更新标记表。标记数字越小,最近使用频率越低。4实验环境windows7 ultimate x64 with sp1Dev-c+5 程序源码#include#include#include#include #include #include using namespace std;typedef struct block/页帧块结构
4、 int num;int lable;block;int page_size, frame_size;/序列数,页帧大小 vector order;/存放序列vector frame;/页帧 void page_replacement (int kind)/kind=1 为 FIFO,kind=2 为 LRU/初始化frame.clear();block init;init.num=-1;init.lable=-1;for(int i=0; itemp)(frame.at(j).lable-;/多余部分结束elsecoutpage_size;if(page_sizeframe_size;if(
5、frame_size7)cout“页帧数有误“;return 0;int number;srand(unsigned(time(NULL);/设置随机数种子for(int i=0; ipage_size; i+)number=rand()%10;/页面数从 0 到 9order.push_back(number);/* 课本例子,使用这个时将上面的随机数注释掉order.push_back(7);order.push_back(0);order.push_back(1);order.push_back(2);order.push_back(0);order.push_back(3);order
6、.push_back(0);order.push_back(4);order.push_back(2);order.push_back(3);order.push_back(0);order.push_back(3);order.push_back(2);order.push_back(1);order.push_back(2);order.push_back(0);order.push_back(1);order.push_back(7);order.push_back(0);order.push_back(1);*/coutendl“随机生成的页面引用序列为:“endl;for(int i
7、=0; iorder.size(); i+)coutorder.at(i);if(order.size()-1!=i)cout“, “;coutendlendl;page_replacement (1);coutendlendl;page_replacement (2);system(“pause“);return 0;6 结果测试首先以课本上为例:20 个序列:7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1帧序列为 3FIFO 错误数 15,置换顺序课件与课本完全相符。LRU 错误数 12,置换顺序课件与课本完全相符。其他随机数实验其他随机数实验