操作系统页面置换算法.docx
《操作系统页面置换算法.docx》由会员分享,可在线阅读,更多相关《操作系统页面置换算法.docx(28页珍藏版)》请在冰豆网上搜索。
操作系统页面置换算法
《操作系统》课程设计任务书
题目:
常常利用页面置换算法模拟实验
学生姓名:
学号:
班级:
题目类型:
软件工程(R)指导教师:
一、设计目的
学生通过该题目的设计进程,掌握常常利用页面置换算法的原理、软件开发方式并提高解决实际问题的能力。
二、设计任务
一、了解UNIX的命令及利用格式,熟悉UNIX/LINUX的常常利用大体命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。
二、设计一个虚拟存储区和内存工作区,并利用最佳淘汰算法(OPT)、先进先出算法(FIFO)、最近最久未利用算法(LRU)计算访问命中率。
(命中率=1-页面失效次数/页地址流长度)
三、设计要求
1、分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。
2、设计适合的测试用例,对取得的运行结果要有分析。
3、设计中碰到的问题,设计的心得体会。
4、文档:
课程设计打印文档每一个学生一份,并装在统一的资料袋中。
五、光盘:
每一个学生的文档和程序资料建在一个以自己学号和姓名命名的文件夹下,刻录一张光盘,装入资料袋中。
四、提交的功效
1.设计说明书一份,内容包括:
1)中文摘要100字;关键词3-5个;
2)设计思想;
3)各模块的伪码算法;
4)函数的挪用关系图;
5)测试结果;
6)源程序(带注释);
7)设计总结;
8)参考文献、致谢等。
2.刻制光盘一张。
五、主要参考文献
1.汤子瀛,哲凤屏.《运算机操作系统》.西安电子科技大学学出版社.
2.王清,李光明.《运算机操作系统》.冶金工业出版社.
3.孙钟秀等..高等教育出版社
4.曾明. .陕西科学技术出版社.
5.张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社.
6.孟静, .高等教育出版社
7.周长林,.高等教育出版社
8.张尧学,,清华大学出版社
9.任满杰,,电子工业出版社
10.张坤.操作系统实验教程,清华大学出版社
六、各阶段时刻安排(共2周)
周次
日期
内容
地点
第1周
星期一~二
教师讲解设计要求
查找参考资料
教室
图书馆
星期三~五
算法设计,编程实现
教室
第2周
星期一~三
算法设计,编程实现
教室
星期四~五
检查程序,答辩
教室
2013年12月9日
摘要
操作系统是管理运算机系统的全数硬件资源包括软件资源及数据资源,控制程序运行改善人机界面,为其它应用软件提供支持等,使运算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。
操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:
进程与处置机管理、作业管理、存储管理、设备管理、文件管理。
在地址映射进程中,若在页面中发觉所要访问的页面再也不内存中,则产生缺页中断。
当发生缺页中断时操作系统必需在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。
而用来选择淘汰哪一页的规则叫做页面置换算法(Page-ReplacementAlgorithms)。
本次课程设计应用请求分页调度算法OPT、FIFO和LRU模拟页面调度算法,并提供性能比较分析功能。
关键词:
操作系统;页面置换算法;LRU算法;OPT算法;FIFO算法
1绪论
问题的提出
在存储器管理方式中,有一个特点,就是当要求作业全数装入内存才能运行。
可是如此就存在两种情形:
(1)有的作业专门大,不能全数装入内存,致使作业无法进行。
(2)有大量作业要求运行时,内存容量不足容纳所有作业,而虚拟内存技术正是在逻辑上扩充内存容量,将会解决以上两个问题。
所以,能够当进程开始运行时,先将一部份程序装入内存,另一部份暂时留在外存;当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存的工作;当没有足够的内存空间时系统自动选择部份内存空间,将其中原有的内容互换到磁盘上,并释放这些内存空间供其它进程利用。
通常,把选择换出页面的算法称为页面置换算法,模拟页面置换算法用以客观解决内存不足的矛盾。
国内外研究的现状
1961年英国曼彻斯特大学推出了“虚拟存储”管理技术,并在ATRAS运算机上实现这一技术,70年代以后,这一技术才真正普遍利用,目前许多大型运算机均采用此技术。
虚拟存储管理技术的关键在于页面置换算法的选择。
1966年Belady在理论上提出最优页面置换算法(OptimalReplacementAlgorithm,OPT),另外还有先进先出置换算法(firstinputfirstoutput,FIFO),最近最少利用页面置换算法(leastrecentlyused,LRU),最少利用页面置换算法(leastfrequentused,LFU,或最不常常利用算法),时钟置换算法(clock,或称最近未利用页面置换算法(notusedrecently,NUR)),页面缓冲(pagebuffering)置换算法等。
设计思想
选择置换算法,先输入所有页面号,为系统分派物理块,依次进行置换:
1.先进先出页面置换算法(FIFO):
这是最先出现的置换算法。
该算法老是淘汰最先进入内存的页面,即选择在内存中驻留时刻最久的页面予以淘汰。
该算法实现简单只需把一个进程已调入内存的页面,按前后顺序存入一个时刻数组,并将其中时刻值最大的页面进行淘汰,并替换入新的页面就可以够实现。
2.最近最久未利用页面置换算法(LRU):
算法的大体思想:
当需要淘汰某一页时,选择离当前时刻最近的一段时刻内最久没有利用过的页先淘汰。
该算法的主要起点是,若是某页被访问了,则它可能马上还被访问。
或反过来讲,若是某页很长时刻未被访问,则它在最近一段时刻不会被访问。
3.最佳页面置换置换算法(OPT):
其所选择的被淘汰页面,将是永不利用的,或是在最长时刻内再也不被访问的页面。
可保证取得最低的缺页率。
但由于人们目前还无法预知一个进程在内存的若干个页面中,哪个页面是未来最长时刻内再也不被访问的,因此该算法也是无法实现的。
可是可利用该算法去评价其它算法。
2伪码算法
先进先出页面置换算法
voidFIFO()
{
intmemery[10]={0};
inttime[10]={0};/*记录进入物理块的时刻*/
inti,j,k,m;
intmax=0;/*记录换出页*/
intcount=0;/*记录置换次数*/
/*前mSIZE个数直接放入*/
for(i=0;i{
memery[i]=page[i];
time[i]=i;
for(j=0;jtemp[i][j]=memery[j];
}
for(i=mSIZE;i{
/*判断新页面号是不是在物理块中*/
for(j=0,k=0;j{
if(memery[j]!
=page[i])
k++;
}
if(k==mSIZE)/*若是不在物理块中*/
{
count++;/*计算换出页*/
max=time[0]