os页面置换先进先出算法.docx
- 文档编号:10790748
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:14
- 大小:219.63KB
os页面置换先进先出算法.docx
《os页面置换先进先出算法.docx》由会员分享,可在线阅读,更多相关《os页面置换先进先出算法.docx(14页珍藏版)》请在冰豆网上搜索。
os页面置换先进先出算法
答卷封面
(COVER)
评阅结果
Finalmark
评阅人
Examiner
课程名称(Subject):
操作系统课程设计
编号(No.):
系别(Department):
信息科学系
专业(Major):
计算机科学与技术
姓名(Name):
学号(Student’sNumber):
注意事项(Notes)
1.考生需将上述有关项目填写清楚
2.字迹要清楚,保持卷面清洁。
3.交卷时请将本答卷和题签一起上交,题签作为封面下一页装订。
1、Candidatesshouldfillintheinformationappropriately.
2、Keepthehandwritingclearandthepapertidy.
3、Candidateshouldhandinthiscoverandpapertogether;theanswersheetshouldbeattachedtothecover.
机密(Confidential)编号(No.):
11-12-1-050154
试题(Test)
课程名称(Subject):
操作系统课程设计考核类别(Typeoftest):
考查
课程类别(Typeofcourse):
实践环节考试形式(Testtype):
论文
使用范围(Targetgroup):
计算机科学与技术
要求:
一、通过本课程设计,使学生在上机实验中体会计算机操作系统的基本原理,训练学生模拟实现操作系统管理和控制资源的能力。
二、学生可在下列14个题目中任选1个。
(1)先来先服务调度算法、短作业优先调度算法、时间片轮转调度算法、优先级调度算法
(2)生产者-消费者问题、读者-写者问题
(3)最先适应算法、最佳适应算法、最坏适应算法
(4)先进先出算法、最久未使用淘汰算法、理想淘汰算法
(5)银行家算法
(6)进程通信
(7)小型文件系统
三、模拟实现算法在Windows平台下,可用C语言、C++语言和Java语言等。
摘要
本文围绕Java编程语言在网络编程方面的具体应用,论述了使用面向对象方法,先进先出置换算法对程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
关键词:
操作系统先进先出置换算法Java语言
目录
一、设计题目1
二、设计内容1
三、设计过程1
3.1需求分析1
3.2概要设计2
3.3详细设计2
3.4代码实现5
3.5程序运行6
四、总结9
五、参考文献10
一、设计题目
《先进先出置换算法》。
2、设计内容
(1)概述
在进程运行过程中,若其所要访问的页面不在内存所需把他们调入内存,但内存已无空闲时,为了保证进程能够正常运行,系统必须从内存中调入一页程序或数据送磁盘的对换区中。
但应将那个页面调出,须根据一定的算法来确定。
通常,把选择换出页面的算法称为页面置换算法。
置换算法的好坏,将直接影响到系统的性能。
一个好的页面置换算法,应具有较低的页面更换频率。
从理论上将讲,应将那些以后不再访问的页面换出,或把那些较长时间内不再访问的页面调出。
目前存在着不同的算法,他们都试图更接近与理论上的目标。
拥有页面交换机制的操作系统总是把当前进程中急需处理的部分页面换入到内存当中,而把更多暂时不需要处理的页面放置在外存当中。
由于进程需要处理的页面顺序不同,因此必须要在内存与外存之间进行页面交换,页面置换算法也就应运而生。
(2)设计原理
先进先出(FIFO)算法:
这是最早出现的置换算法。
该算法总是淘汰最先进入内存的页面,即选择在内存停留时间最久的给予淘汰。
该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替代指针,使它总是指向最老的页面。
但该算法与进程实际运行的规律不相适应,因为在运行中,有些页面经常被访问,比如,含有全局变量,常用函数,例程等方面,FIFO
算法并不能保证这些页面不被淘汰。
当需要选择一个页面淘汰时,总是选择最先进入内存空间的那一个页面。
只要在系统中建立一个FIFO队列,以反映页面的活动情况。
被选择的页面总是处于队首的页面,而最近调入的页面永远存放在队列的尾部。
三、设计过程
3.1需求分析
本程序实现了操作系统中页式虚拟存储管理中缺页中断理想型淘汰算法,该算法在访问串中将来再也不出现的或是在离当前最远的位置上出现的页淘汰掉。
这样,淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。
该程序能按要求随机确定内存大小,随机产生页面数,进程数,每个进程的页数,给进程分配的页数等,然后运用理想型淘汰算法对每个进程进行计算缺页数,缺页率,被淘汰的序列等功能。
使用先进先出算法。
实验环境:
1.PC微机
2.Windows操作系统
3.Java开发环境
功能设计分析:
在掌握基本的算法理论原理的基础上,能够选取适合的语言和开发工具,编写程序将虚拟存储管理中页面置换算法的机制动态的演示出来。
具体功能主要包括:
1.页面置换:
采用选定的页面置换算法来模拟管理也表中页的置换过程。
2.界面设计:
要求有图形界面,能够直观的了解页面置换的过程,能够给出当前被置换出的页号,以及总的缺页次数,缺页率,命中率。
3.2概要设计
总体设计框图
3.2.1总体设计框图
3.3详细设计
1)编译FIFO.java。
2)实现FIFO置换算法。
3)编译并多次执行“FIFO.java”,查看FIFO置换算法的详细置换过程及结果。
4)查看程序源代码。
程序设计步骤
1.初始化界面。
2.输入虚存数目和页号数目。
3.并按“虚存数目”,“页号数目”进行存储。
4.按下“产生页号”,可随机产生页号。
5.按下“演示FIFO!
”,可进行演示程序。
6.按下右上角红叉即可关闭程序。
详细设计图
1.详细设计框图
3.3.1详细设计框图
2.FIFO流程图
3.3.2FIFO流程图
3.4代码实现
经过前面的工作,最后在集成编辑环境中,编写的程序代码如下:
publicvoidFIFO()
{
inttime[]=newint[mSIZE];
inti;
for(i=0;i time[i]=0; i=0; intj=0; intm=-1; intn=-1; intmax=-1; intmaxtime=0; intcount=0; for(i=0;i { for(j=0;j { if(memery[j]! =0) continue; m=j; break; } for(j=0;j if(memery[j]==process[i]) n=j; for(j=0;j if(time[j]>maxtime) { maxtime=time[j]; max=j; } if(n==-1) { if(m! =-1) { memery[m]=process[i]; time[m]=0; for(j=0;j<=m;j++) time[j]++; m=-1; count++; }else { memery[max]=process[i]; time[max]=0; for(j=0;j time[j]++; max=-1; maxtime=0; count++; } } else { memery[n]=process[i]; for(j=0;j time[j]++; n=-1; } for(j=0;j memString=(newStringBuilder(String.valueOf(memString))).append(memery[j]).append("").toString(); fifoArea.append((newStringBuilder(String.valueOf(memString))).append("\n").toString()); memString=""; } doubletest=(double)count/(double)pSIZE; fifoArea.append((newStringBuilder("页面缺页次数为: ")).append(count).append("\n").toString()); fifoArea.append((newStringBuilder("此算法缺页率为: ")).append((double)count/(double)pSIZE).append("\n").toString()); fifoArea.append((newStringBuilder("此算法命中率为: ")).append(1.0D-test).append("\n").toString()); } 3.5程序运行 1.初始化界面。 3.5.1初始化界面 2.输入虚存数目和页号数目。 3.5.2输入虚存数目和页号数目 3.并按“虚存数目”,“页号数目”进行存储。 3.5.3存储虚存数目,页号数目 4.按下“产生页号”,可随机产生页号。 3.5.4随机产生页号 5.按下“演示FIFO! ”,可进行演示程序。 3.5.5演示FIFO 6.多次运算。 3.5.6多次运算 四、总结 经过是个星期的上机实践学习,是我对操作系统这门课程有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现线我的好多不足之处,首先是以前的java语言基础没打好,一些基本常识性东西都不知道,再有操作时偶很多很生疏的到东西,虽然在学习课本知识的时候感觉什么东西都很简单但真正操作起来确实如此之难,语言中经常出现的错误也不了解,通过实践,是我在这几个方面的认识有所提高。 通过实践的学习,我认识到学好计算机重在实践,所以以后再学习的过程中,我会更加注视实践操作,是自己更好的学好计算机,回顾此次操作系统课程设计,至今我仍感慨颇多,的却,从选题到定稿,从理论到时间,在整整十个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的只是,通过这次课程设计,使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而起稿自己的实际动手能力和独立思考的能力,在设计的过程中遇到问题,可以说的是困难重重,这毕竟是第一次做的东西,难免会遇到过各种各样的问题,同时在设计饿的过程中发现了自己记得不之处,对以前所学过的只是理解的不够深刻,中午的不够牢固,不过设计终于顺利完成了,在设计终于到了很多编程问题,最后在老师的辛勤指导下,终于迎刃而解。 另外,使我体会最深的是,任何一门知识的掌握,仅靠学习理论知识是远远不够的,要与实际行动相结合才能到达功效。 五、参考文献 [1]严蔚敏,吴伟民,数据结构,清华大学出版社,1997.4 [2]张尧学,史美林,计算机操作系统教程,清华大学出版社,2000.8 [3]孙静宇,计算机操作系统课程设计指导书,太原理工出版社,2006.4 [4]汤子瀛,哲凤屏,汤小丹,计算机操作系统,西安电子科技大
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- os 页面 置换 先进 算法