页面置换算法模拟程序-附代码

页面置换算法模拟程序-附代码
页面置换算法模拟程序-附代码

%

目录

1.问题的提出...................................................... 错误!未定义书签。

关于页面置换算法模拟程序问题的产生................................. 错误!未定义书签。

任务分析.......................................................... 错误!未定义书签。2.需求分析........................................................ 错误!未定义书签。3.方案设计........................................................ 错误!未定义书签。4.总体设计........................................................ 错误!未定义书签。

程序N-S图....................................................... 错误!未定义书签。

主要的函数....................................................... 错误!未定义书签。

主要流程图及代码.................................................. 错误!未定义书签。

FIFO(先进先出)................................................ 错误!未定义书签。

LRU(最近最久未使用)........................................... 错误!未定义书签。

OPT(最佳置换算法)............................................. 错误!未定义书签。

实现结果.......................................................... 错误!未定义书签。5.程序测试........................................................ 错误!未定义书签。

设计测试数据...................................................... 错误!未定义书签。

测试结果及分析.................................................... 错误!未定义书签。…

摘要

随着计算机的普及人们的物质生活得到了极大的满足,人们在精神生活方面同样也需要提高,所以越来越多的人进行着各种各样的学习。操作系统是计算机教学中最重要的环节之一,也是计算机专业学生的一门重要的专业课程。操作系统质量的好坏,直接影响整个计算机系统的性能和用户对计算机的使用。一个精心设计的操作系统能极大地扩充计算机系统的功能,充分发挥系统中各种设备的使用效率,提高系统工作的可靠性。由于操作系统涉及计算机系统中各种软硬件资源的管理,内容比较繁琐,具有很强的实践性。要学好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果.

本课程设计是学生学习完《操作系统教程》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

熟悉页面置换算法及其实现,引入计算机系统性能评价方法的概念。

|

关键词:编制页面置换算法模拟程序、打印页面、FIFO页面算法、LRU页面置换算法、OPT页面置换算法。

引言

1.问题的提出

关于页面置换算法模拟程序问题的产生

在各种存储器管理方式中,有一个共同的特点,即它们都要求将一个作业全部装入内存方能运行,但是有两种情况:(1)有的作业很大,不能全部装入内存,致使作业无法运行;(2)有大量作业要求运行,但内存容量不足以容纳所有这些作业。而虚拟内存技术正式从逻辑上扩充内存容量,将会解决以上两个问题。

从内存中调出一页程序或数据送磁盘的对换区中,通常,把选择换出的页面的算法称为页面置换算法(Page-Replacement Algorithms)。进而页面置换算法模拟程序能客观的将其工作原理展现在我们面前。

任务分析

首先,定义宏变量,设置所占最大内存长度。编辑以时间为种子,初始化随即发生器。进行相关页面输入程序的编写以及页面的打印。尔后,寻找最近最近最久未使用的页面、记录当前内存块中页面离下次使用间隔长度等相关程序的代码编写。最后,进行)FIFO 、LRU、 OPT三种算法的编写。

2.需求分析

1.用随机数方法产生页面走向,页面走向长度为L。

2.根据页面走向,分别采用FIFO和LRU算法进行页面置换,统计缺页率;

为简化操作,在淘汰一页时,只将该页在页表中抹去,而不再判断它是否

被改写过,也不将它写回到辅存。

3.假定可用内存块和页表长度 (作业的页面数)分别为m和k,初始时,作

业页面都不在内存。

随机数产生程序:

int i,j;

j=time(NULL);um=rand( )%10+1;ime=0;

cout<

}

上述随机数发生函数产生的随机数为~,稍另变化就可得到0~n1之间的随机数。

程序开始时,应对变量Seed (实型)赋初值。

根据页面置换算法的理论操作及要求,首先要进行页面长度的确定,定义结构体用以储存数据,进行主界面代码及FIFO、LRU、OPT页面置换算法代码的编写。

3.方案设计

首先,定义宏变量,设置所占最大内存长度。编辑以时间为种子,初始化随即发生器。进行相关页面输入程序的编写以及页面的打印。

其次,寻找最近最近最久未使用的页面、记录当前内存块中页面离下次使用间隔长度等相关程序的代码编写。

最后,进行FIFO 、LRU、 OPT三种算法的编写。.

程序运行平台

VC++

具体操作如下:在VC++的环境下准备用时钟函数调用库函数(#include <>)、取时钟时间并存入t调用库函数(t=time(NULL))、用时间t初始化随机数发生器调用库函数(srand(t)返回一个1~10之间的随机数(x=rand( )%10+1)。编写三种算法。

4.总体设计

程序N-S图

程序开始

输入选择项(进行判断)

页面存在进入下一部操作此项不存

输入要输出的结果

输出结果

主要的函数

Input(int m,Pro p[L])(打印页面走向状态);

void print(Pro *page1)(打印当前的页面);

int Search(int e,Pro *page1 )(寻找内存块中与e相同的块号);

int Max(Pro *page1)(寻找最近最长未使用的页面);

int Count(Pro *page1,int i,int t,Pro p[L])(记录当前内存块中页面离下次使用间隔长度);

int main()(主函数);

.随机数发生器

{

int temp=0,s;

for(t=0;t

cout<

print(page);

i++;

}

}

}

cout<<"缺页次数:"<

}

实现结果

程序在运行的情况下,进入主界面输入菜单,如图3-3所示:

输入14:

图4-5 输入14后的输出图

输入25:

图5-6输入数据25后输出图

输入数据18:

图5-7 输入数据18后的输出图

输入数据:

图5-8输出图

选1,进入FIFO页面置换:

图5-9 FIFO的输出图选2,进入LRU页面置换:

图5-10 LRU的输出图输入3,进入OPT页面置换:

图5-11 OPT的输出图5.程序测试

设计测试数据

A 14 25 18 ;2 6 4 ;

B 1

C 2

D 3

测试结果及分析

1)测试A结果及分析

进入主菜单后输入14、25,显示输入不满足要求。输入18 显示相关信息;输入2 、6不满足要求,输入4 显示出相关信息。

2)测试结果及分析

显示出FIFO页面置换算法的缺页信息及缺页率。

3)测试C结果及分析

显示出LRU页面置换算法的缺页信息及缺页率。

4)测试D结果及分析

显示出OPT页面置换算法的缺页信息及缺页率

结论

通过这次课程设计,不仅让我了解了页面置换算法,开始我一味的进行调试,急切的想侥幸调试出来,但由于没有进行深入的考虑,我调试了很久都没没有成功,我仔细的分析题目,分析材料,在原由的基础上我进行了改正,我最后还是调试成功了,还是经过了一翻努力,这次操作系统实习,不仅让我对操作系统这门课程有了更深入的研究、对很多重要的概念有了巩固和掌握。通过努力,三个页面置换算法程序都已经完成,此时此刻,我心里多了些成就感。

虽然自己所做的很少也不够完善,但毕竟也是努力的结果。主要有以下几点收获:

1.通过对上网和看书查阅相关资料,使自己对VC ++语言的基本框架有新的

了解,加深了对可视化程序的认识。

2.在使用VC++语言来实现功能时,不像以往用的其他语言,它比较简练,

更容易理解,实用性很强。

3.先进先出页面置换和LRU以及OPT算法各有特点,但是实践起来却很大,

使自己对页面置换算法有了新的认识。

一周半的课程设计就要结束了,不但对专业知识有了更深的理解,更使的自己认识到实践的重要性,理论、实践相结合才能达到很好的学习效果,特别是程序语言的学习。

致谢

本次课程设计能顺利完成,感谢学校的大力支持,感谢数学与计算机学院为我们提供实练的机会,感谢老师的细心教导。

此次的课程设计收获很多,虽然经过了一段漫长而又痛苦的过程,但是自己还是完成了,这是与自己的努力是分不开的,但是自己在调试过程当中遇到的一些问题,自己仍然不懂,是在同学、老师的帮助下完成的,在这里还要再次对他们的付出表示崇高的敬意。

参考文献

《面向对象程序设计与VisualC++教程》陈天华编著

《C程序设计(第三版)》谭浩强编著

《C++入门经典》

《面向对象程序设计与C++实现》刘晋萍编著

《计算机操作系统教程》徐甲同等编著

《操作系统》罗宇等编著

《操作系统实验教程》张丽芬, 刘利雄, 王全玉编著《计算机操作系统》梁红兵、哲风屏、汤子瀛编著《操作系统教程》陈向群、杨芙清编著

代码:

#include<>

#include <>

#include <>

#include <>

#define L 20um=rand( )%10+1;ime=0;

cout<

}

cout<

return m;

}

void print(Pro *page1)um<<" ";

cout<

}

int Search(int e,Pro *page1 )um)return i;ime,i=0;

while(i

i++;

}

for( i=0;i

}

i=0;

cout<<"1:FIFO页面置换"<

cout<<"2:LRU页面置换"<

cout<<"3:OPT页面置换"<

cout<<"按其它键结束程序;"<

cin>>c;

system("cls");

if(c==1)um,page)>=0) um<<" "; um

cout<<"不缺页"<

i++; um=p[i].num; um<<" ";

print(page); um,page);

if(t>=0)ime=0;ime++;um<<" ";

cout<<"不缺页"<

}

else um=p[i].num; ime=0; um<<" ";

print(page);

for(a=0;a

if(a!=t)page[a].time++; um,page)>=0)um<<" ";

cout<<"不缺页"<

i++;

}

elseum==0)a++;um==0&&q>t)q=t;um=p[i].num;

n++;

cout<

print(page);

i++;

}

else

{

int temp=0,s;

for(t=0;t

n++;

cout<

print(page);

i++;

}

}

}

cout<<"缺页次数:"<

}

}while(c==1||c==2||c==3);

return 0; }

`

相关主题
相关文档
最新文档