一、实验目的与要求

合集下载

实验指导书

实验指导书

一、实验课的目的和要求1.实验目的在职业技术教育中,实验课是很重要的一环,其目的是培养学生的实验技能、实际操作能力以及运用知识分析解决实际问题的能力。

同时,促使学生养成勤动手动脑的好习惯,以使其举一反三、触类旁通,从而为走向社会打下坚实的基础。

2.实验要求(1)认真做好每次实验前的预习。

(2)实验的每个步骤、每个环节(如接线、记录、操作等)都要自己完成。

通过实验真正做到:能正确使用常用电工仪器、仪表及设备,掌握一般电工测量技术,具有实验技能和实际动手能力。

(3)学会处理实验数据、分析实验现象和结果、编写实验报告。

(4)培养严谨的、实事求是的科学态度和严肃认真的工作作风。

二、预习要求(1)仔细阅读实验指导书,复习有关理论知识,明确实验目的和原理;明确实验操作步骤;了解所用电工仪器、仪表和设备的规格及使用方法。

(2)写出实验预习报告。

其内容包括:①写出实验名称、日期、班级、姓名、组别和同组人员姓名。

②写出实验目的。

③列出所用仪器和设备的名称、型号、规格、数量及其在实验中的作用。

④简述实验步骤,画出实验接线图及需测数据的记录表格。

⑤分析实验数据及实验过程中遇到的间题。

⑥回答预习思考题。

三、实验注意事项(1)检查本组的仪器、设备是否完好齐全,并将有关仪器、设备调整到备用状态,如测试仪表要调零、设备的开关和调节装置应置于实验所要求的位置等。

(2)接线必须是在断电情况下,按照实验电路有顺序地进行。

要特别注意仪表的连接方式、量程、极性、同名端等问题。

接线完毕后先自行检查,再经同组人复查和指导老师检查无误后,才能接通电源。

(3)通电前一定通知本组同学,且通电时手不要马上离开电源开关,如发现有异常现象、异常声音或气味等,应立即断开电源;通电后测量和操作要谨慎,勿碰触带电导体。

需要改接线路或仪表时,必须先断电;改接后,必须先检查才能通电。

(4)出现故障时,必须在老师的指导下排除。

(5)读数时要单眼正视仪表(表盘上有反光镜时,应使指针与镜中倒影重合),以防视角误差;每一组数据应多次重复测量,至少本组同学每人测一次,取平均值作为测量结果,以减少偶然因素(如电压波动、读数失误等)造成的误差。

运筹学实验指导书

运筹学实验指导书

运筹学实验指导书-CAL-FENGHAI.-(YICAI)-Company One1实验一、线性规划综合性实验一、实验目的与要求:使学生掌握线性规划建模的方法以及至少掌握一种线性规划软件的使用,提高学生应用线性规划方法解决实际问题的实践动手能力。

通过实验,使学生更深入、直观地理解和掌握线性规划的基本概念及基本理论和方法。

要求学生能对一般的线性规划问题建立正确的线性规划数学模型,掌握运筹学软件包线性规划模块的操作方法与步骤,能对求解结果进行简单的应用分析。

二、实验内容与步骤:1.选择合适的线性规划问题学生可根据自己的建模能力,从本实验指导书提供的参考选题中或从其它途径选择合适的线性规划问题。

2.建立线性规划数学模型学生针对所选的线性规划问题,运用线性规划建模的方法,建立恰当的线性规划数学模型。

3.用运筹学软件求解线性规划数学模型学生应用运筹学软件包线性规划模块对已建好的线性规划数学模型进行求解。

4.对求解结果进行应用分析学生对求解结果进行简单的应用分析。

三、实验例题:(一)线性规划问题某集团摩托车公司产品年度生产计划的优化研究1)问题的提出某集团摩托车公司是生产各种类型摩托车的专业厂家,有30多年从事摩托车生产的丰富经验。

近年来,随着国内摩托车行业的发展,市场竞争日趋激烈,该集团原有的优势逐渐丧失,摩托车公司的生存和发展面临严峻的挑战。

为此公司决策层决心顺应市场,狠抓管理,挖潜创新,从市场调查入手,紧密结合公司实际,运用科学方法对其进行优化组合,制定出1999年度总体经济效益最优的生产计划方案。

2)市场调查与生产状况分析1998年,受东南亚金融风暴的影响,国内摩托车市场出现疲软,供给远大于需求,该集团的摩托车生产经营也出现开工不足、库存增加和资金周转困难等问题。

该集团共有三个专业厂,分别生产轻便摩托车、普通两轮车和三轮摩托车三大系列产品。

20000辆和22000辆。

为1600万元。

根据以上情况,该公司应如何制定1999年度总体经济效益最优的生产计划方案(二)线性规划建模设X j表示生产M j型摩托车的数量(j=1,2,…,9),则总利润最大的摩托车产品生产计划数学模型为:MaxZ=×+×+×+×+×+×+×+×+×=++++++++满足 X1+X2+X3≤50000 (1)X4+X5+X6≤60000 (2)X7+X8+X9≤10000 (3)++++++++≤4000×5 (4)X3≤20000 (5)X6≤22000 (6)×(X1+X2+X3)+×(X4+X5+X6)+×3(X7+X8+X9)≤3000 (7)++++++++≤1600(8)X j≥0(j=1,2,3,4…9)模型说明:约束(1)、(2)、(3)分别表示三种系列摩托车的最大生产能力限制;约束(4)表示摩托车的生产受流动资金的限制;约束(5)和(6)表示M3和M6两种车产量受发动机供应量限制;约束 (7)表示未销售的产量受库存能力的限制;约束(8)表示未销售产品占用资金的限制。

实验目的和要求

实验目的和要求

实验目的和要求
以下是 6 条符合要求的关于“实验目的和要求”的内容及例子:
1. 哎呀呀,实验目的不就是为了搞清楚一些我们特别好奇的事情嘛!就像你想知道鸡蛋能不能孵出小鸡,那实验目的就是看看在啥条件下能孵出来呀!比如说,咱可以整个温度变化的实验,看不同温度对鸡蛋孵化的影响,哇塞,是不是超级有趣呀!
2. 实验要求可不是随便说说的哟!它就像是给咱设定的规矩,必须要遵守呢!好比说做个化学实验,要求你精确称量,那你就得老老实实称准确呀,不然结果不就乱套啦!就像你搭积木,不按规矩搭肯定会倒掉,对不?
3. 嘿,实验目的有时候就像是我们给自己定的小目标呀!比如研究植物生长,不就是想看到它们怎么一点点长大变漂亮嘛!那我们就得好好设计实验呀,观察浇水多少、晒太阳时间长短对它们的影响,这多让人兴奋呀!
4. 哎呀,实验要求可是很关键的呢!这就像比赛规则一样,大家都得遵守呀!比如说做个物理小实验要求不能有干扰,那咱就得找个安静的地儿呀,不然数据都不准确啦!这不是很重要嘛!
5. 实验目的其实就是指引我们前进的明灯呀!比如我们想知道哪种材料更坚固,那就是我们要努力去弄明白的事儿呀!通过各种测试来比较,就像我们在寻找宝藏一样刺激呢!
6. 实验要求那可是必须得认真对待的呀!就好像跳舞要有节奏感一样,不能乱套!比如说要求实验组和对照组要分得清清楚楚,那可不能马虎呀,不然实验不就白做了啦!你说是不是呀!
我的观点结论:实验目的和要求就是实验的灵魂和框架,决定着实验能否成功和有意义,可得重视起来呀!。

实训实习目的与要求

实训实习目的与要求

实训实习⽬的与要求 实习是每⼀个⼤学毕业⽣必须拥有的⼀段经历,这次实习使我们在实践中了解社会,在实践中巩固知识。

下⾯提供实训实习⽬的与要求,欢迎阅览! 实训实习⽬的与要求【1】 ⼀、实习⽬的 ⾦⼯实习是⼀门实践性的技术基础课,是机械类各专业学⽣学习机械制造的基本⼯艺⽅法,培养⼯程素质的重要必修课。

⾦⼯实习以实践教学为主,学⽣必须进⾏独⽴操作,在保证贯彻教学基本要求的前提下,教学尽可能结合⽣产进⾏。

1.使学⽣了解机械制造的⼀般过程。

熟习机械零件的常⽤加⼯⽅法、所⽤主要设备的⼯作原理和典型机构、⼯夹量具以及安全操作技能。

了解机械制造的基本⼯艺知识和⼀些新⼯艺、新技术在机械制造中的应⽤。

2.完成⼯程基本训练,为学习后续课程及从事机械设计⼯作奠定⼀定的实践基础。

同时对零件初步具有进⾏⼯艺分析和选择加⼯⽅法的能⼒。

在主要⼯种上应具备有能独⽴完成简单零件加⼯制造的实践能⼒。

3.培养学⽣的劳动观点、创新精神和理论联系实际的科学作风。

初步建⽴市场、信息、质量、成本、效益、安全、环保等⼯程意识。

⼆、⾦⼯实习的基本要求 1.基本知识要求 ⾦⼯实习是重要实践教学环节,其基本要求是:按照教学⼤纲,完成车⼯、钳⼯和铸⼯及数控加⼯等各⼯种的基本操作和学习相关的⾦属⼯艺基础知识,使学⽣了解机械制造的⼀般过程,熟悉机械零件常⽤加⼯⽅法及所⽤设备结构原理,⼯卡量具的使⽤,具有独⽴完成简单零件加⼯能⼒;使学⽣通过简单零件加⼯,巩固和加深机械制图知识及其应⽤,学会对⼯艺过程的分析;培养学⽣的劳动观点,理论联系实际的⼯作作风和经济观点,实习总结、是⾦⼯实习质量考核的形式之⼀。

2.能⼒培养要求 加强对学⽣专业动⼿能⼒的培养;促使学⽣养成发现问题、分析问题、运⽤所学过的知识和技能解决问题的能⼒和习惯;⿎励并着重培养学⽣的创新意识和创新能⼒;结合教学内容,注重培养学⽣的⼯程意识、产品意识、质量意识,提⾼其⼯程素质。

3.安全操作要求 在⾦⼯实习全过程中,始终强调安全第⼀的观点,进⾏⼊⼚安全教育,宣传安全⽣产规则,教育学⽣遵守劳动纪律和严格执⾏安全操作规程。

实验一——精选推荐

实验一——精选推荐

实验一、可卸代型的制作(6学时)一、目的与要求:1、掌握模型的修整方法;2、学会牙托法固定工作模型;3、学会模型打孔、粘钉和加底座的方法;4、学会分割模型并分离代型部分;5、学会修整代型根部。

二、实验内容:1、参观标准可卸代型模型。

2、示教可卸代型的制作。

3、同学完成可卸代型模型。

三、实验器材:模型修整机、技工打磨机、塑料牙托、球钻、石膏振荡器、代型钉、代型打孔机、气枪、502胶、蜡片、酒精灯、火柴、超硬石膏、橡皮碗、调拌刀、分离剂、代型锯、石膏打磨头、手术刀、铅笔等。

四、方法与步骤:(一)牙托法1、修整模型:用模型修整机修整模型的四周及底部,将底部修成一个平坦的平面,颈缘至底部不少于10mm,高度不能低于牙托边缘。

然后用舌侧修整机将工作模型内侧多余的部分磨除,形成马蹄状并与牙托的弯曲槽相适应,在模型与牙托内壁之间留有适当空隙以容纳新灌入的石膏。

最后用锐利的雕刻刀将模型牙合面的石膏瘤去除,检查上下颌模型之间的咬合关系是否正确。

2、调和超硬石膏,灌入牙托内:将工作模型适当浸湿,调和超硬石膏灌入牙托内约2/3的高度。

3、固定工作模型:将工作模型压入上述牙托内,用新调和的石膏包埋固定工作模型的底部,去除牙托边缘多余的石膏,注意不要使石膏沾在预备牙上。

4、分割模型:固定工作模型的石膏硬固后,取出模型,在要分割的牙的近远中与邻牙的交界处,分别向颊舌面画出与牙体长轴平行的切割线。

然后用代型锯沿所画的切割线平行切割,直到将工作模型和包埋石膏均切透为止,切勿伤及基牙及邻牙。

分割后的模型在牙托内复位,检查复位情况。

5、修整代型:用微型电机夹持梨形钨钢钻对代型颊舌侧根部进行初步修整,然后用球形钻修整颈缘,以形成清晰的牙颈缘和便于制作熔模的根部形态。

即将代型根部修整成肩台边缘突出的状态。

最后用有色细铅笔将肩台边缘线画出,并用瞬间粘合剂封固。

6、涂布间隙涂料:在代型表面涂一层间隙涂料,目的是补偿铸造金属的冷却收缩,保证修复体顺利就位。

会计实验手册实验目的与要求

会计实验手册实验目的与要求

会计实验手册实验目的与要求实验目的(1)提高实际操作能力,完整了解会计操作的全部过程。

会计模拟实习是为了提高我们的实际应用水平,通过做分录,填制凭证到制作账本来巩固学生的技能。

学生也完整了解并熟悉了从建账、填制和审核原始凭证、记账凭证到登记账簿各个环节;从日常会计核算、成本计算到编制会计报告、年终结账整个过程。

(2)加深对理论知识的理解。

会计是对会计单位的经济业务交易或事项两个方面进行计量、记录、计算、分析、检查、预测、参与决策、实行监督,旨在提高经济效益的一种核算手段,是经济管理活动的重要组成部分。

通过会计实训,使得学生系统地练习企业会计核算的基本程序和具体方法,加强对所学专业理论知识的理解。

不仅仅提高了实际操作的动手能力,也是对所学专业知识的一个检验和巩固。

(3)对会计这一经济管理活动有了更系统、深刻的认识。

通过实际操作,使得学生每个人掌握填制和审核原始凭证与记账凭证,登记账薄的会计工作技能和方法,从而对所学理论有一个较系统、完整的认识,最终达到对会计理论和方法融会贯通的目的,理解会计核算的综合性、完整性、超前性和系统性,为以后的实际工作打下更好的基础。

实验要求(1)实验过程中同学们可以交流讨论,可以携带教材《会计》,随时参考。

但是不要请其他同学带做,或代替其他同学做。

(2)在校园网范围内都可以做,建议大家尽快做完,为后续找工作、考研等事情预留时间。

(3)会计实训时间为9周,实训平台在10周后关闭,不及格者明年补考。

(4)因事请假的,请按照学校要求履行合规的请假手续,提供合规的请假凭证(书面文件)。

缺课三次的,取消考试资格,实习成绩直接判定为零分,下个学期补考。

实验设备与环境实验设备综合楼A215、A216、A312、A218或者第三实验楼1208机房的计算机设备。

实验环境由厦门网中网软件有限公司提供的财会实训平台——网中网实训教学平台V7.0(http://202.195.244.21:8090/netinnet_ckyjx),选择其中“中级综合7.0”开展会计实验。

微机控制实验报告

微机控制实验报告

实验一 采样与保持仿真实验一、实验目的与要求1、了解数/模转换器的零阶保持器作用。

2、验证零阶保持器在控制系统中的作用。

3、验证采样周期对系统稳定性的影响。

4、学习控制系统计算机辅助设计软件MATLAB 及其仿真环境SIMULINK 的使用。

二、仿真软硬件环境 PC 机,MATLAB R2009。

三、实验原理其中零阶保持器描述回路的采样功能和D/A 转换器的保持功能。

四、SIMULINK 仿真结构图 五、仿真实验记录 六、思考题1、在微机控制系统中采样周期T 的选择应注意哪些方面答:采样周期取越小值,复现精度就越高,也就是说“越真”。

若采样-+ ○×R C周期太长。

计算机控制系统受到的干扰就得不到及时克服而带来很大误差,使系统动态品质恶化,甚至导致计算机控制系统的不稳定。

2、若模拟量在A/D转换时变化较大,是否要加保持器为什么答:从启动信号转换到转换结束的数字输出,经过一定时间,而模拟量转换期间,要求模拟量信号保持不变,所以必须用采样保持器.该电路具有两个功能:采样跟踪输入信号;保持暂停跟踪输入信号,保持已采集的输入信号,确保在A/D转换期间保持输入信号不变。

在A/D转换期间,为了使输入信号不变,保持在开始转换时的值,通常要采用一个采样保持电路。

对于MCS-96单片机的A/D转换器,启动转换实际上是把采样开关接通,进行采样,过一段时间后,开关断开,采样电路进入保持模式,才是A/D真正开始转换。

3、D/A转换器为什么会具有零阶保持器的作用答:在这种结构中每一个通道都有一个D/A转换器。

D/A转换器是按照采样周期T对控制器输出的数字量进行D/A转换的,但由于D/A转换器具有数据输入锁存功能,它能够在接收下一组数字量之前,一直保持前一组数字量不变,因而D/A转换器的输出模拟量,能够在一个采样周期内保持不变,也就是说,D/A转换器本身就具有零阶保持器的功能。

4、计算机控制系统模拟量输出通道中若无零阶保持器会出现什么问题答:模拟量输出通道中要有输出保持器,这是因为计算机控制是分时的,每个输出回路只能周期地在一个时间片上得到输出信号,即这时执行部件得到的是时间上离散的模拟信号,而实际的执行部件却要求连续的模拟信号,因此为了使执行部件在两个输出信号的间隔时间内仍然能得到输出信号,就必须有输出保持器,通过它将前一采样控制时刻的输出信号保持下来,直到下一个采样控制时刻到来,重新得到新的输出信号计算机控制系统中通常采用零阶保持器,即前一采样时刻的输出值原封不动的(理想化的)保持到下一采样时刻到来。

实验化学需氧量的测定一、实验目的和要求

实验化学需氧量的测定一、实验目的和要求

实验实验 化学需氧量的测定一、实验目的和要求1. 了解COD 测定的意义和方法2.掌握标准重铬酸钾法测定COD 原理与方法。

3. 复习巩固加热回流,移液操作,滴定操作二、实验实验原理原理在强酸性溶液中,准确加入过量的重铬酸钾标准溶液,加热回流,将水样中还原性物质(主要是有机物)氧化,过量的重铬酸钾以试亚铁灵作指示剂,用硫酸亚铁铵标准溶液回滴,根据所消耗的重铬酸钾标准溶液量计算水样化学需氧量。

三、实验实验仪器仪器仪器和设备和设备1. 250mL 全玻璃回流装置。

2.加热装置(电炉)。

3.25mL 酸式滴定管、磨口锥形瓶、锥形瓶、移液管、容量瓶等。

4.其他设备仪器:废液烧杯、洗瓶、实验记录表格、笔。

四、实验实验试剂试剂1、重铬酸钾标准溶液 (C1/6K 2Cr 2O 7=0.2500mol/L)2.试亚铁灵指示液3.硫酸亚铁铵标准溶液(用时需标定)[C(NH 4)2Fe(SO 4)2·6H 2O≈0.1mol/L]4.硫酸98%5.硫酸-硫酸银溶液:于500mL 浓硫酸中加入5g 硫酸银。

放置1—2d ,不时摇动使其溶解。

6.硫酸汞:结晶或粉末。

五、硫酸亚铁铵标准溶液硫酸亚铁铵标准溶液标定方法标定方法标定方法::标准吸取5.00ml 重铬酸钾标准溶液于250ml 锥型瓶(不带磨口)中,加蒸馏水稀释至55ml 左右,缓慢加入15ml 浓硫酸,混匀。

冷却后,加入3滴试亚铁灵指示液(约0.15ml ),用硫酸亚铁铵溶液滴定,溶液的颜色有黄色经蓝绿色至红褐色即为终点。

式中:c——硫酸亚铁铵标准溶液的浓度(mol/L );V——硫酸亚铁铵标准溶液的用量(mL )。

六、测定步骤测定流程:水样10ml (原样或经稀释)于锥形瓶中(废水中氯离子含量超过30mg/L时,应先把硫酸汞加入回流锥形瓶中,再加废水,摇匀。

)↓←0.2500mol/L (1/6K 2Cr 2O 7)5.00ml↓←玻璃珠5-6粒混匀,接上回流装置↓ ←自冷凝管上口加入Ag 2SO 4-H 2SO 4溶液15ml (催化剂)混匀↓回流加热2h↓冷却↓ ←自冷凝管上口加入45ml 蒸馏水于反应液中取下锥形瓶,继续冷却至室温↓ ←加试铁灵指示剂3滴用0.1mol/L(NH 4)2Fe(SO 4)2标液滴定,终点由黄色、蓝绿色变成红棕色。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

淮海工学院计算机工程学院实验报告书课程名:《操作系统原理A 》题目:虚拟存储器管理页面置换算法模拟实验班级:软件***学号:20**1228**姓名:****一、实验目的与要求1.目的:请求页式虚存管理是常用的虚拟存储管理方案之一。

通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。

2.要求:本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。

其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。

要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。

程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。

二、实验说明1.设计中虚页和实页的表示本设计利用C语言的结构体来描述虚页和实页的结构。

在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。

pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。

time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。

在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。

pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。

next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。

2.关于缺页次数的统计为计算命中率,需要统计在20次的虚页访问中命中的次数。

为此,程序应设置一个计数器count,来统计虚页命中发生的次数。

每当所访问的虚页的pfn项值不为-1,表示此虚页已被装入某实页内,此虚页被命中,count加1。

最终命中率=count/20*100%。

3.LRU算法中“最近最久未用”页面的确定为了能找到“最近最久未用”的虚页面,程序中可引入一个时间计数器countime,每当要访问一个虚页面时,countime的值加1,然后将所要访问的虚页的time项值设置为增值后的当前countime值,表示该虚页的最后一次被访问时间。

当LRU算法需要置换时,从所有已分配实页的虚页中找出time值为最小的虚页就是“最近最久未用”的虚页面,应该将它置换出去。

4.算法中实页的组织因为能分配的实页数n是在程序运行时由用户动态指派的,所以应使用链表组织动态产生的多个实页。

为了调度算法实现的方便,可以考虑引入free和busy两个链表:free链表用于组织未分配出去的实页,首指针为free_head,初始时n个实页都处于free链表中;busy链表用于组织已分配出去的实页,首指针为busy_head,尾指针为busy_tail,初始值都为null。

当所要访问的一个虚页不在实页中时,将产生缺页中断。

此时若free链表不为空,就取下链表首指针所指的实页,并分配给该虚页。

若free链表为空,则说明n个实页已全部分配出去,此时应进行页面置换:对于FIFO 算法要将busy_head 所指的实页从busy链表中取下,分配给该虚页,然后再将该实页插入到busy 链表尾部;对于LRU算法则要从所有已分配实页的虚页中找出time值为最小的虚页,将该虚页从装载它的那个实页中置换出去,并在该实页中装入当前正要访问的虚页。

三、程序流程图FIFO算法LRU算法四、主要程序清单#include<stdlib.h>#include<stdio.h>#include<conio.h>#include <time.h>#define M 10 //10个虚页#define N 20 //20个页面的访问序列//定义虚页的结构typedef struct VirtualPage{int pn;int pfn;int time;}VirtualPage;//定义实页的结构typedef struct Page{int pn;int pfn;struct Page* next;}Page;struct VirtualPage vp[M]; // 定义存放10个虚页的数组int queue[N]; //定义一个数组,存放随机生成的20个数,表示访问虚页的次序,里面的数值不能超过9int count; //存放缺页次数,用来统计缺页率。

本算法没有考虑预调页,只要该页不在内存,就认为缺页一次。

int countime; //用于LRU算法中,找出要淘汰的页。

每当要访问一个虚页面时,countime的值加1,然后将所要访问的虚页的time项值设置为增值后的当前countime值int NotInMemory[N]; //表示每次虚页访问是否在内存struct Page *Free,*Free_head,*Busy,*Busy_tail,*Busy_head,*temp;void init(Page pp[],int MemoryStatus[][N],int L){int i,j;count=0;countime=0;//初始化10个虚页for(i=0;i<M;i++){vp[i].pn=i;vp[i].pfn=-1;vp[i].time=0;}//初始化5个实页,并将其串成链表形式 for(i=0;i<L;i++){pp[i].pn=-1;pp[i].pfn=i;pp[i].next=NULL;}//将5个实页依次相连,形成Free链表Free=&pp[0];for(i=0;i<L-1;i++){pp[i].next=&pp[i+1];}pp[L-1].next=NULL;Free_head=Free;//初始化Busy链表Busy=NULL;Busy_head=NULL;Busy_tail=NULL;//初始化MemoryStatus数组for(i=0;i<L;i++)for(j=0;j<N;j++){MemoryStatus[i][j]=-1;}//初始化NotInMemory数组for(i=0;i<N;i++){NotInMemory[i]=1;}}void FIFO(int L,int MemoryStatus[][N]) //先入先出算法的具体实现。

{count=0;int i,j,k,currentpage; //一些临时变量for(i=0;i<N;i++) //这是主循环,每次处理一个虚页访问。

直到把20个虚页处理完为止。

{//当前访问的虚页是哪一页?由数组queue[i]中的值表示currentpage=queue[i];//判断该虚页是否已经调入内存if(vp[currentpage].pfn!=-1) //表示该页已经在内存中,可以直接访问。

同时记录访问该页时对应的实页信息(和前一页相同){for(j=0;j<L;j++){MemoryStatus[j][i]=MemoryStatus[j][i-1];}NotInMemory[i]=0;}else //该页不在内存,需要请求调页{count=count+1; //缺页数加1if(Free!=NULL) //如果Free链表不为空,表示内存中还有空的实页,故从Free链表中取队首元素,装入该虚页,并修改相关信息。

{temp=Free_head; //本程序中用Free表示链表的起始地址,Free_head表示链表中的第一个元素地址。

实际上两者的值永远相等。

Free_head=Free_head->next;Free=Free_head;//将虚页currentpage装入temp指向的实页,该实页的编号为temp->pfnvp[currentpage].pfn=temp->pfn;temp->pn=currentpage;//将temp指向的实页插入Busy链表的末尾temp->next=NULL;if(Busy==NULL) //如果是第一次把虚页装入实页,则temp就是Busy链表的第一个元素。

{Busy=temp;Busy_head=Busy;Busy_tail=Busy;}else //如果不是第一次把虚页装入实页,则将temp插入Busy链表的队尾。

{Busy_tail->next=temp;Busy_tail=temp;}//修改内存状态for(k=0;k<L;k++) //复制访问前一页时的内存状态{MemoryStatus[k][i]=MemoryStatus[k][i-1];}MemoryStatus[temp->pfn][i]=currentpage; //虚页currentpage装入了temp->pfn表示的那个实页里}else //如果Free链表为空,需要置换一页出去。

由于采用FIFO算法,故取busy链表的队首元素,将其置换出去,修改信息后插入队尾。

{//将Busy首元素取出,赋给temptemp=Busy;Busy_head=Busy->next;Busy=Busy_head;//将当前虚页currentpage装入temp指向的实页,修改其信息vp[temp->pn].pfn=-1; //该页被置换出去了,所以其pfn字段要设置成-1,表示其已经不再内存。

vp[currentpage].pfn=temp->pfn; //currentpage被装入内存,更新其pfn 字段为temp指向的实页。

temp->pn=currentpage; //temp指向的实页,装入了currentpage 虚页//将temp指向的实页插入Busy链表的末尾,此时不用再考虑Busy是否为空了。

temp->next=NULL;Busy_tail->next=temp;Busy_tail=temp;//修改内存状态for(k=0;k<L;k++) //复制访问前一页时的内存状态{MemoryStatus[k][i]=MemoryStatus[k][i-1];}MemoryStatus[temp->pfn][i]=currentpage; //虚页currentpage装入了temp->pfn表示的那个实页里}}}}void LRU(Page pp[],int MemoryStatus[][N],int L){int i,j,k,currentpage;for(i=0;i<N;i++){currentpage=queue[i];if(vp[currentpage].pfn!=-1){for(j=0;j<L;j++){MemoryStatus[j][i]=MemoryStatus[j][i-1];}NotInMemory[i]=0;}else{count=count+1;if(Free!=NULL){temp=Free_head;Free_head=Free_head->next;Free=Free_head;vp[currentpage].pfn=temp->pfn;temp->pn=currentpage;temp->next=NULL;if(Busy==NULL){Busy=temp;Busy_head=Busy;Busy_tail=Busy;}else{Busy_tail->next=temp;Busy_tail=temp;}for(k=0;k<L;k++) //复制访问前一页时的内存状态{MemoryStatus[k][i]=MemoryStatus[k][i-1];}MemoryStatus[temp->pfn][i]=currentpage;}else{int min=vp[pp[0].pn].time;temp=&pp[0];for(k=1;k<L;k++){if(vp[pp[k].pn].time<min){min=vp[pp[k].pn].time;temp=&pp[k];}}vp[temp->pn].pfn=-1;vp[currentpage].pfn=temp->pfn;temp->pn=currentpage;for(k=0;k<L;k++)'.{MemoryStatus[k][i]=MemoryStatus[k][i-1];}MemoryStatus[temp->pfn][i]=currentpage;}}countime++;vp[currentpage].time=countime;}}int main(){int i,j,flag=1,L;while(flag){printf("请输入实页的个数:");scanf("%d",&L);struct Page pp[L]; //定义一个存放5个实页的数组,在底下还要将其串成链表int MemoryStatus[L][N];init(pp,MemoryStatus,L);printf("FIFO算法:\n");srand(time(0));for(i=0;i<N;i++){queue[i]=rand()%10;printf("|%3d",queue[i]);}printf("\n");FIFO(L,MemoryStatus); //运行FIFO() 算法//显示依次访问20个虚页时对应的内存状态,即MemoryStatus数组的值。

相关文档
最新文档