《操作系统原理 》实验报告 - 5 -
}
if(n>m)
count=count+m;
cout<<\缺页中断次数为:\}
void menu() {
cout<<\页面置换算法--------\ cout<<\页面置换算法------\ cout<<\退出------\
cout<<\默认:-1表示物理块空闲-------\ cout<<\请选择算法\}
void main()
{ int n,m,Page[Max],Block[Size],n1,m1,Block1[Size]; char t;
cout<
Init(Block,m); Init1(Block1,m1);
cout<<\请输入总页面数n<=30:\ cin>>n; n1=n;
cout<<\请输入页面号引用串:\ creat(Page,n); creat1(Page,n1); while(1) {
menu(); cin>>t; switch(t) {
case '1':LRU(Page,Block1,n1,m1); continue;
case '2':FIFO(Page,Block,n,m); continue;
case '3':exit(0); } } }
四、测试数据与实验结果
图1 输入要分配的物理块数、页面总数、页面序列号
《操作系统原理 》实验报告 - 6 -
图2 LRU算法的实现
图3 FIFO算法的实现
五、结果分析与实验体会
页面置换算法理解比较容易,这次根据学号要求实现的是LRU和FIFO算法的实现。 其实这两种算法的程序编写比较容易,虽然不全是自己编写的,一部分是参考的网上的例题,但是通过对每一语句的理解,自己弄懂了整个程序的执行原理。但是,在编写过程中自己还是遇到了一些问题。
最大的一个问题就是两个算法的正确实现,在程序的编写时,两个程序是分开进行编写的,分别执行起来没有什么问题,但是把两个程序融合在一起后,却出现了问题,即在执行完成一个算法后再执行另外一个算法时,开始的数据是紧接着上次算法结果的数据进行实验的。这个问题困扰了我好长时间,直到现在还没有很好的解决掉,程序只能分别执行一次,如果再进行执行的话,就会出现问题。
自己的编程技术不好,程序编的也很繁琐,但是基本的要求已经实现了,希望这次的实验是自己动手的一个开始,自己应该更加努力,再接再厉。