实时操作系统实验报告(共8篇)
分 类:软件项目计划 使用者:E-fanciers
Version: 1.0
项 目 承 担 队伍:烟台大学
计算机学院 E-fanciers小组撰 写 人(签名): 许超 于歌
完 成 日 期: 2009-7-16 本文档使用小组: E-fanciers小组
评审负责人(签名): 孝瑞
评 审 日 期: 2009-7-19
目 录
一、引言.............................................3
1.1编写目的.......................................3 1.2项目背景.......................................3 1.3定义...........................................3 1.4参考资料:.....................................3
二、开发结果........................错误!未定义书签。
2.1产品..........................错误!未定义书签。2.2主要功能......................错误!未定义书签。2.3所用工时.......................................4 2.3所用机时.......................................4 2.3进度...........................................4
三、评价............................................4
3.1生产率评价.....................................4 3.2技术方案评价...................................4 3.3产品质量评价...................................4
四、经验与教训.......................................4
一.引言
1.编写目的(阐明编写总结报告的目的,指明读者对象。)
详细陈述项目开发过程,对项目开发做最后的总结完善,说明项目开发过程中遇到的难题及解决方案。
2.项目背景(说明项目的来源、委托单位、开发单位及主管部门。)
随着微电子技术、计算机技术和网络通信技术的发展,嵌入式系统已广泛应用在各个领域,包括消费电子、汽车电子、网络通信、工业设备、航空航天和国防军事等。随着嵌入式技术的发展,工业领域也一改过去传统的单片机应用模式,逐渐将一些新嵌入式技术引入到系统中。特别是作为软件基础的嵌入式操作系统已广泛为业界所接受,借以提高系统的开发效率和运行效率。是否采用嵌入式操作系统,已成为工业设备品质优劣的标志之一。
当今的嵌入式操作系统领域呈现百家争鸣的状态。据最近的调查数据显示,嵌入式操作系统有数十种之多的。这种多样性存在是必然的,是由嵌入式系统的定制性所决定的,是针对各个领域和行业的不同需求的应对。也就是说,各个嵌入式操作系统都有自己的应用领域,针对不同的应用没有绝对的优劣之分,不会出现一种操作系统垄断的局面。自主开发嵌入式操作系统绝对不是多余的,也是是对这种多样性的自然顺应,应该可拥有自己的用武之地。有些国内嵌入式厂商将希望寄托在Linux之上,以为它可以帮助解决所面临的版税和安全等问题。但事实并非完全如此,至少在嵌入式系统领域。首先,Linux还是泊来货,国人并未掌握其核心技术和进程,也并未解决对外依赖的问题。其次,Linux是为桌面系统而设计的,并不能很好地满足嵌入式系统高效性和灵活性的要求;再次,Linux的一统也违背了嵌入式系统应用灵活定制的本质特性。
3.定义(列出报告中用到的专门术语定义和缩写词的原意。)
int taskInit(void);
/*创建一个任务, 返回: 返回任务编号tid, >0: 成功, 其他: 失败.*/ /*name: 任务名称, entryPtr : 任务函数入口, stack_size: 任务栈大小, priority: 任务优先级*/ int taskCreate(char *name, void *entryPtr, int stack_size, int priority);/*启动一个任务, 让taskCreat创建的任务参加调度*/ int taskStart(unsigned char tid);/*tid: 任务编号, 由taskCreate返回*/ int taskPriorityGet(unsigned char tid);int taskPrioritySet(unsigned char tid, int newPriority);/*获取和设置任务优先级, 用于动态调整*/ int taskSuspend(unsigned char tid);/*将任务挂起, 该任务退出调度*/ int taskDelete(unsigned char tid);/*将任务删除 该任务退出调度且回收任务分配的资源*/ int semCreate(void);/*互斥信号量创建, 返回信号量标识sid, <0: 失败*/ int semTake(int sid);int semGive(int sid);/*互斥信号量获取和释放*/ int taskSleep(int ticks);/*任务睡眠(非忙等), 由任务自己调用, 主动阻塞一段时间.时间单位为tick, 即10ms*/ 4.参考资料(列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:(1)项目开发计划;(2)需求规格说明书;(3)概要设计说明书;(4)详细设计说明书;(5)用户操作手册;(6)测试计划;(7)测试分析报告(8)本报告引用的其他资料、采用的开发标准或开发规范。)(1)软件项目计划(2)需求规格说明(3)软件编写向导
(4)国家软件开发文档标准模板
二.开发结果
1.产品(可包括:(1)列出各部分的程序名称、源程序行数(包括注释行)或目标程序字节数及程序总计数量、存储形式;产品文档名称等。)
2.主要功能及性能 基本功能
1.基于参考硬件平台,建立硬件抽象层,完成基本硬件初始化,建立时钟中断; 2.在硬件抽象层基础上,建立多任务操作系统环境; 3.任务调度采用同级时间片轮询机制;
4.实现任务间基本通讯机制:互斥信号量(共享内存); 5.实现基本的时钟管理机制:任务睡眠阻塞;
6.实现一个RS232串口驱动。基于串口驱动实现一个命令行Shell(用一个独立的任务实现),可在超级终端显示信息和执行命令。
扩展功能
7.任务区分优先级,在同级轮询调度基础上添加优先级调度机制; 8.不同优先级任务之间实现抢占调度;
9.在抢占调度的基础上实现优先级逆转保护,避免逻辑死锁问题; 10.将代码移植到另一个硬件平台上运行,验证代码移植性。3.所用工时(按人员的不同层次分别计时。)
编码成员工时:60小时/周,共约400小时;
编写文档成员:共约60小时。
4.所用机时
5小时/天,共约300小时的机时。
5.进度(给出计划进度与实际进度的对比。)
根据敏捷开发方法的指导,每天查漏补缺,实际进度基本和计划进度一致。三.评价
1.生产率评价(如平均每人每周源程序行数、文档的字数等。)
源程序:200行/周
文档:1500字/周
2.技术方案评价
严格遵循开发流程,运用科学开发方法。
3.产品质量评价
按照大赛要求完成了应有功能的基础上有所添加自己小组的特色,譬如,设置相应的出错处理机制,为加强该系统的安全性与稳定性也做了相应的措施,总体来说,我们小组开发的嵌入式实时操作系统功能良好,稳定性强。
四.经验与教训
随着地下空间等基础设施的快速发展, 在其中扮演关键角色的掘进机越来越重要。由于地下岩层的复杂性以及工作环境的恶劣性, 作为掘进机开挖工具的盘形滚刀极其容易磨损, 当盘形滚刀磨损至一定程度后, 如不进行更换, 将会影响整个掘进机的掘进效率[1,2]。因此为了保证掘进机的正常高效掘进, 需要在掘进机工作期间实时监测盘形滚刀的磨损状况, 从而为盘形滚刀的更换、掘进参数的调整以及掘进机的高效施工提供技术依据。
目前, 盘形滚刀磨损的监测方法主要有异味添加剂方法、开仓监测法、掘进参数分析法和液压检测法[3,4,5,6,7,8]。异味添加剂法原理是在滚刀的轴承润滑剂中添加有特殊气味的添加剂, 在掘进过程中假如盘形滚刀由于磨损等失效, 导致漏油, 会散发特殊的气味, 因而能够更敏感地确定盘形滚刀损坏的信息, 但是该方法只能获得盘形滚刀的损坏信息, 不能得到滚刀具体的磨损状况。开仓监测法是检测滚刀磨损最直观最有效的方法, 但是通常开仓需要带压操作, 安全风险以及查刀成本较大。掘进参数分析法是另一种可对盘形滚刀磨损监测的方法, 但是该方法对掘进机司机要求比较高, 主观性较大, 可操作性不强。液压监测法主要是通过液压系统的压力变化确定滚刀的磨损, 但是液压管路数量有限, 不能检测所有滚刀的磨损信息, 且无法实时监测。
为了解决盘形滚刀磨损状况的实时监测问题, 本文利用电涡流传感器测量位移原理[9,10,11,12,13], 通过无线结合有线的方式, 建立一套完整的滚刀磨损状态实时监测系统, 并在某工程现场进行现场实验, 验证该系统的可行性。
1 系统原理
盘形滚刀, 作为掘进机的关键部件, 主要包括刀圈、刀体、轴承、刀轴、端盖以及密封装置[14], 如图1所示。盘形滚刀的工作方式为刀轴固定在滚刀刀座上, 刀圈、刀体等相关零部件一起绕刀轴旋转[15], 因此监测的传感器不能直接接触滚刀。而电涡流传感器是一种非接触式传感器, 在在线位移测量领域应用很广, 因此利用该传感器测量位移原理, 通过检测传感器与滚刀之间的距离变化, 实现实时监测滚刀的磨损状况。
在测量之前, 将电涡流传感器固定安装在盘形滚刀刀圈正面, 得到滚刀与传感器之间的初始距离S1, 当盘形滚刀出现磨损之后, 滚刀直径变小, 滚刀与电涡流传感器之间的距离增大, 变为S2, 如图2所示, 从而得到盘形滚刀的磨损量:
式中:δ为盘形滚刀磨损量, mm;S2为滚刀磨损之后传感器与滚刀之间的距离, mm;S1为传感器与滚刀之间的初始距离, mm。
2 系统模块
盘形滚刀磨损状况实时监测系统总共包括5个部分, 分别是电涡流传感器、无线发送模块、无线接收模块、存储模块以及上位机, 如图3所示。
其中电涡流传感器放置在保护壳里, 该保护壳既可以保护电涡流传感器避免被岩渣损坏, 又不影响电涡流传感器正常工作。整个电涡流传感器包括保护壳固定安装在滚刀刀圈正面, 并尽量靠近盘形滚刀刀圈, 如图4所示, 总共安装S29和S37两个刀座, 实时监测该两个刀座上滚刀的磨损状况, 由于焊接固定电涡流传感器底座存在一定的误差, 因此两刀座上传感器与滚刀之间的初始距离不一样, 其中S29初始距离为7 mm, S37初始距离为10mm。无线发射模块包含电池、电路板以及天线三部分, 如图5所示。电池为无线发送模块提供能量, 电路板通过信号线与电涡流传感器连接, 接收电涡流传感器传输的盘形滚刀磨损状况数据, 并通过天线无线传输至无线接收模块。无线发送模块安装至刀盘内部, 可避免被岩渣损坏, 同时传感器与发射模块之间信号线用液压管路保护, 避免损坏。无线接收模块通过无线接收无线发送模块发送的数据, 并通过信号线传输至存储模块, 如图6所示。无线接收模块安装至主驱动靠近刀盘处, 该位置既可接收无线发射模块发射的信号, 又能方便与存储模块连接。存储模块和上位机一起放置在掘进机主控室, 存储模块接收无线接收模块传输的数据后, 一方面把该数据存储至自带的SD卡上, 另一方面通过信号线与上位机进行通讯, 如图7所示。上位机接收存储模块传输的信号, 并通过上位机界面实时显示S29和S37刀座上滚刀的磨损状况, 上位机监测界面如图8所示, 其中29表示S29号滚刀的磨损量;37表示S37号滚刀的磨损量;打开和关闭串口表示上位机与存储模块通讯的连接和断开;磨损系数表示把电涡流传感器传输的电压信号转换成磨损状况的磨损系数;安全值表示滚刀的极限磨损量, 超过该值 (图示为20mm) , 图中圆圈由绿色变为红色;编号设置表示安装电涡流传感器的滚刀编号设置。
3 系统实验结果及分析
为了验证实时监测系统的可行性, 需要对实时监测的滚刀磨损与实测的滚刀磨损进行比较, 因此选择可以方便测量滚刀磨损的开敞式TBM作为实验现场。实验岩层为燕山早期花岗岩, 主要矿物成分有碱性长石、斜长石、石英和黑云母, 石英占矿物总含量的25%, 岩石坚硬, 岩类为Ⅲ~Ⅱ类花岗岩, 且中间存在夹层。
在实时监测滚刀磨损量的同时, 利用磨损测量卡规, 测量滚刀的实际磨损量, 如图9所示, 记录统计实时监测的滚刀磨损量以及实际测量的磨损量, 表2为S37刀座滚刀的磨损情况, 表3为S29刀座滚刀的磨损情况, 其中误差为实时磨损与实测磨损的差的绝对值:
式中:ε为误差, mm;δ2为实时监测的磨损, mm;δ1为实际测量的磨损, mm。
根据表1和表2数据, 可以看出相对于实测滚刀磨损1mm的精度, 实时监测的滚刀磨损的精度可达0.1 mm, 对滚刀的磨损状况更加精确。通过比较实时磨损与实测磨损, 得出S37和S29刀座上滚刀实时监测的磨损与实测的磨损相差较小, S37刀座上滚刀的最大磨损误差为0.93mm, S29刀座上滚刀的最大磨损误差为0.3 mm。滚刀实测磨损与实时监测磨损存在误差的原因, 一是磨损测量卡规与实时监测的滚刀磨损量的精度不一样;二是人为测量以及读数误差。由于S37刀座上滚刀的旋转半径比S29大, 且S37刀座上滚刀的真实磨损比S29的大, 因此S37刀座上滚刀的磨损最大误差比S29的大。
根据表1、表2数据, 得出图10和图11, 从图中可看出随着掘进机掘进距离的增大, 滚刀随着破岩量增大磨损量而增大, 并且实时监测的磨损量与实测磨损量增长趋势一样。通过比较可以得到, 该实时监测系统能够实时监测滚刀的磨损状况。
4 结语
本文利用电涡流测量位移原理, 建立一套实时监测盘形滚刀磨损状况系统, 该系统包括电涡流传感器、无线发送模块、无线接收模块、存储模块以及上位机。通过工程现场实验, 表明该系统实时监测的滚刀磨损量与实测磨损量相吻合, 误差较小, 验证了该系统能够实时监测滚刀磨损状态, 说明该系统方案的可行性。
摘要:为了实时监测盘形滚刀的磨损状况, 建立一套盘形滚刀磨损状况实时监测系统, 该系统利用电涡流传感器测量位移原理, 通过无线结合有线的方式, 将测量的滚刀磨损状况传送至上位机上显示。通过某工程现场实验, 实时监测不同刀位滚刀的磨损状况, 并与实际测量的滚刀磨损状况进行比较, 验证了该系统能够有效监测滚刀的磨损量, 从而实现盘形滚刀磨损状况的实时监测。
【关键词】计算机课程改革 云平台 实验报告
一、计算机课程实验报告的现状与分析
计算机实验教学改革是计算机教学改革不可缺少的重要组成部分。计算机课程实验项目的种类分为基础性、验证性、综合与设计性三类。其中。基础性、验证性实验项目内容均为计算机及其各种软件的使用操作。其目的是使学生学会并熟练使用计算机及其各种应用软件。因此,它与常规的物理、化学实验有较大的区别,没有观测结果和测量数据,也无需进行数据处理和误差处理。学生所做的实验操作结果全部都能保存在电子文件中,课后,老师可打开文件直接查看学生的文件或操作过程的结果进行评比,这是其它许多学科的实验无法做到的。在综合与设计性实验中,学生独立完成一定的实验任务。实验目的是要有最终的确定性的成果,即形成一个计算机的作品,不像物理、化学的综合与设计实验那样有明确的实验步骤和实验理论,因而在计算机实验教学中,学生编制书面的实验报告对于实验教学的掌握并无多大的实际作用。计算机课程的实验报告形式应编写电子实验报告为主,通过编写电子实验报告,可有利于提高学生的实验总结能力、文字表达能力、分析问题和解决问题等方面的能力,由此可以提高计算机教学质量。
学生的电子实验报告要求存放在一定的硬件介质中,以供教师进行批改。目前。对于计算机课程实验报告的形式与存放方式,教师批阅电子版实验报告的模式,由各学校自定,没有一个统一的标准与分数界定划分。为了解决这个问题,我们结合广州市“天云计划”的具体实施,构建了基于云平台的实验报告系统,系统运转二年来促进了计算机实验教学的课程改革,提高了计算机实验教学的质量。
二、基于云平台的实验报告系统的建设与计算机课程电子版实验报告的改革尝试
1.建立基于云平台的数字教育资源共建共享服务平台,学生依托校园网进行资源共享与电子版实验报告的存储,教师通过校园网络进行跟踪学生学习进度、网上对电子电子版实验报告评测。
我们现有的实验报告系统是云计算向服务化的方向发展后,建立在校园网内,依托现有已建成的多层次、多功能的“标准、开放、交互、协作、共建、共享”的基础教学综合应用资源库平台进行运作。云計算使得用户可以按需定制。可以以较低成本和较高性能解决无限增长的海量信息的存储和计算的问题。学生可依托校园网进行电子版实验报告的系列完成工作。
学生利用上实验课与自主学习时间,完成实验报告系统中的基础实验、验证实验与设计综合性的实验。并生成电子版的实验报告,存放在云平台中,学生的实验报告上交期结束后,由教师将学生提交的实验报告进行集中存档,学生不能再进行修改。
教师利用实验报告系统指导,预先布置上机实验,说明实验的原理,网上对电子电子版实验报告评测。
2.建立了批阅电子版实验报告的标准化模式
基于云平台的实验报告系统,通过对学生的实验报告生成的结果——电子文件进行自动的初步测试,再将测试结果汇总到对应数据分析库中,教师可根据数据分析,进一步明确批阅实验报告有问题的具体部分,及时发现实验教学或理论教学中存在的诸多问题。
同时,学生实验报告经过系统自动批示与教师重点回复批示后,会将结果保存在系统中,学生通过观看教师批改后的实验报告与观看教师推荐的学生示范实验报告后,总结自己知识点的不足,会对规范基础与验证性的实验报告的规格与形式形成概念,更好地完成该类别的实验项目。系统也会依据学生知识点的不足,自动生成一个针对知识类别的小型实验报告选题。要求学生重新自愿完成。
教师通过批阅实验报告来检查实验教学质量,认真批阅与审核学生的实验报告,可提高教师的教学能力,是实验教学的一个组成重要环节。学生通过撰写实验报告,既是实验项目要求技能操作的教学活动。也是促进学生今后从事科研及科研论文写作能力的培养和提高的一种锻炼过程。
通过实验报告系统,可加强师生之间的对于实验教学过程的交流。在实验报告的讨论栏中,有BBs区,可由学生提出各类实验的感悟与要求,对实验器材的准备要求与意见等。提供各类人员上线的消息服务,如教师上线,则系统可对在线的学生进行消息提醒,提示学生教师在线可以立即回复学生的提问。
3.系统建立了综合设计性实验项目的电子实验报告模式
针对在计算机课程的综合性实验中,学生需要通过设计实验方案,独立完成实验操作、观察、记录、整理思考和概括结论等活动。基于云平台的实验报告系统,建立了综合与设计实验前指导区,教师在综合与设计性实验项目之前就要求学生分成合作团队,要求实验报告不能简单地照抄书本,要求人人完成独立的设计实验方案。建立了阶段报告区,在完成的过程中。通过实验报告系统中的分段报告区上传内容,教师对学生进行网上指导。建立了团队合作区,在完成的过程中,学生要在此体现团队的讨论、分工过程。
对计算机课程综合性实验的学生实验报告的批阅,是根据教师布置的项目要求,考察学生的完成情况,对项目完成的比例、独立完成的程度、创新点、团队配合能力等多方面进行数据考核,将结果表格汇总给教师。再由教师对每个人进行验收答辩,强化学生对该门课程的理解。
4.建立具有抄袭识别的实验报告管理系统
基于云平台的实验报告系统针对电子版实验报告带来的学生抄袭方便的缺点,设计出了一种带有抄袭识别的管理系统,能自动检查综合与设计性实验报告项目的电子版实验报告的格式,检测抄袭度等问题。对于基础、验证性的实验报告。能将检测抄袭度形成数据,由教师根据教学的过程与了解学生的实际学习情况自行决定是否采用检测结果。
三、结束语
姓名
学号
系
计算机
任课教师
指导教师
评阅教师
实验地点
综合楼B102
实验时间
2012-9-26
实验课表现
出勤和个人表现Q1(15+15(组长评分)=30分)
得分:
实验
总分
(Q1+Q2+Q3+Q4)
实验完成情况Q2(45分(组长与教师评分的加权平均))
得分:
实验编号与实验名称:
实验七、常用页面置换算法模拟实验
实验目的:
通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。
实验内容及要求(详见实验讲义与实验指导书):
要求:
1)要求用你熟悉的程序设计语言编写和调试一个页面置换模拟程序;要求在主函数中测试。
2)实验报告中必须包括:设计思想、数据定义(包括详细说明)、处理流程(详细算法描述和算法流程图)、源代码、运行结果、体会等部分。
3)必须模拟本实验内容中提到的算法中的至少2种页面置换算法。
4)
比较不同页面置换算法的效率
内容:编写一个程序,使用以下页面置换算法中的某2种分别模拟一个分页系统,并统计同一个页面访问序列情况下不同页面置换算法引发的缺页中断次数。
1、第二次机会算法(Second
Chance)
2、最近最少使用算法(Least
Recently
Used,LRU)
3、最不常用算法(Not
Frequently
Used,NFU)
4、最近未使用算法(Not
Recently
Used,NRU)
5、时钟页面置换算法
6、老化算法(aging)
页框的数量固定为4,虚拟页面数为8。实验输入为访问页面序列,比如0,1,3,2,7,1
实验用到的软件(:)
DevC++,Visio
实验内容及关键步骤(代码)Q3(15分)
得分:
流程图:输入页面访问序列
取访问的页号
查页表
是否缺页?
是
置缺页标志flag为’*’
按算法不同淘汰一页面
调入所访问的页面
否
FIFO算法流程图
LRU算法流程图:
函数关系解释图:
实现结果:
图1
图2
代码:
#include
#include
#define
MEMORY_SIZE
/*物理块数*/
#define
PROESS_SIZE
/*页面号引用串个数*/#include
#include
/*全局变量*/
int
mSIZE=4;
int
pSIZE=8;
static
int
memery[4]={0};
/*物理块中的页号*/
static
int
page[8]={0};
/*页面号引用串*/
static
int
temp[8][4]={0};
/*辅助数组*/
/*置换算法函数*/
void
FIFO();
void
LRU();
void
OPT();
void
designBy();
/*辅助函数*/
void
print(unsigned
int
t);
/*主函数*/
int
main()
{
int
i,k,code;
designBy();
system(“color
0A“);
puts(“请依次输入页面号(8个):“);
for(i=0;i
scanf(“%1d“,&page[i]);
system(“cls“);
system(“color
0E“);
do{
puts(“输入的页面号引用串为:“);
for(k=0;k<=(pSIZE-1)/20;k++)
{
for(i=20*k;(i
{
if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))
printf(“%d\n“,page[i]);
else
printf(“%d
“,page[i]);
}
}
printf(“*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*\n“);
printf(“*
请选择页面置换算法:\t\t\t
*\n“);
printf(“*
-----------------------------------------
*\n“);
printf(“*
1.先进先出(FIFO)
2.最近最久未使用(LRU)
*\n“);
printf(“*
3.退出
*\n“);
printf(“*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*\n“);
printf(“请选择操作:[
]\b\b“);
scanf(“%d“,&code);
switch(code)
{
case
1:
FIFO();
break;
case
2:
LRU();
break;
case
3:
system(“cls“);
system(“color
0A“);
exit(0);
default:
printf(“输入错误,请重新输入:“);
}
printf(“按任意键重新选择置换算法:>>>“);
getch();
system(“cls“);
}while
(code!=3);
getch();
}
void
print(unsigned
int
t)
{
int
i,j,k,l;
int
flag;
for(k=0;k<=(pSIZE-1)/20;k++)
{
for(i=20*k;(i
{
if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))
printf(“%d\n“,page[i]);
else
printf(“%d
“,page[i]);
}
for(j=0;j { for(i=20*k;(i if(i>=j) printf(“ |%d|“,temp[i][j]); else printf(“ | |“); } for(i=mSIZE+20*k;(i { for(flag=0,l=0;l if(temp[i][l]==temp[i-1][l]) flag++; if(flag==mSIZE)/*页面在物理块中*/ printf(“ “); else printf(“ |%d|“,temp[i][j]); } /*每行显示20个*/ if(i%20==0) continue; printf(“\n“); } } printf(“----------------------------------------\n“); printf(“缺页次数:%d\t\t“,t+mSIZE); printf(“缺页率:%d/%d\n“,t+mSIZE,pSIZE); printf(“置换次数:%d\t\t“,t); printf(“访问命中率:%d%%\n“,(pSIZE-(t+mSIZE))*100/pSIZE); printf(“----------------------------------------\n“); } /*先进先出页面置换算法*/ void FIFO() { int memery[10]={0}; int time[10]={0}; /*记录进入物理块的时间*/ int i,j,k,m; int max=0; /*记录换出页*/ int count=0; /*记录置换次数*/ /*前mSIZE个数直接放入*/ for(i=0;i { memery[i]=page[i]; time[i]=i; for(j=0;j temp[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]