中南大学操作系统原理实验报告

合集下载

金属腐蚀与防护的实验报告-中南大学粉冶院

金属腐蚀与防护的实验报告-中南大学粉冶院

⾦属腐蚀与防护的实验报告-中南⼤学粉冶院实验⼀恒电位法测定阳极极化曲线⼀、⽬的1.了解⾦属活化、钝化转变过程及⾦属钝化在研究腐蚀与防护中的作⽤。

2.熟悉恒电位测定极化曲线的⽅法。

3.通过阳极极化曲线的测定,学会选取阳极保护的技术参数。

⼆、实验基本原理测量腐蚀体系的极化曲线,实际就是测量在外加电流作⽤下,⾦属在腐蚀介质中的电极电位与外加电流密度(以下简称电密)之间的关系。

测量极化曲线的⽅法可以采⽤恒电位和恒电流两种不同⽅法。

以电密为⾃变量测量极化曲线的⽅法叫恒电流法,以电位为⾃变量的测量⽅法叫恒电位法。

⼀般情况下,若电极电位是电密的单值函数时,恒电流法和恒电位法测得的结果是⼀致的。

但是如果某种⾦属在阳极极化过程中,电极表⾯壮态发⽣变化,具有活化/钝化变化,那么该⾦属的阳极过程只能⽤恒电位法才能将其历程全部揭⽰出来,这时若采⽤恒电流法,则阳极过程某些部分将被掩盖,⽽得不到完整的阳极极化曲线。

在许多情况下,⼀条完整的极化曲线中与⼀个电密相对应可以有⼏个电极电位。

例如,对于具有活化/钝化⾏为的⾦属在腐蚀体系中的阳极极化曲线是很典型的。

由阳极极化曲线可知,在⼀定的电位范围内,⾦属存在活化区、钝化过渡区、钝化区和过钝化区,还可知⾦属的⾃腐蚀电位(稳定电位)、致钝电密、维钝电密和维钝电位范围。

⽤恒电流法测量时,由⾃腐蚀电位点开始逐渐增加电密,当达到致钝电密点时⾦属开始钝化,由于⼈为控制电密恒定,故电极电位突然增加到很正的数值(到达过钝化区),跳过钝化区,当再增加电密时,所测得的曲线在过钝化区。

因此,⽤恒电流法测不出⾦属进⼊钝化区的真实情况,⽽是从活化区跃⼊过钝化区。

图1 恒电位极化曲线测量装置三、实验仪器及药品电化学⼯作站CHI660D、铂电极、饱和⽢汞电极、碳钢、天平、量筒、烧杯、电炉、⽔砂纸、U型管蒸馏⽔、碳酸氢铵、浓氨⽔、浓硫酸、琼脂、氯化钠、氯化钾、⽆⽔⼄醇、棉花四、实验步骤1.琼脂-饱和氯化钾盐桥的制备烧杯中加⼊3g琼脂和97ml蒸馏⽔,使⽤⽔浴加热法将琼脂加热⾄完全溶解。

中南大学近代物理实验报告-原子力显微镜实验报告

中南大学近代物理实验报告-原子力显微镜实验报告

近代物理实验实验报告实验名称:原子力显微镜所在学院:物理与电子学院专业班级:物理升华班1301学生姓名:黄佳清学生学号:0801130117指导教师:黄迪辉一、目的要求(1) 了解原子力显微镜的工作原理。

(2) 初步掌握用原子力显微镜进行表面观测的方法。

二、实验原理1.基本原理AFM是利用一个对力敏感的探针针尖与样品之间的相互作用力来实现表面成像的,工作原理如图1所示。

将一个对微弱力极敏感的弹性微悬臂一端固定,另一端有一微小的针尖,针尖与样品的表面轻轻接触,由于针尖尖端原子与样品表面原子间存在极微弱的作用力(10-8~10-6 N),微悬臂会发生微小的弹性形变。

针尖和样品之间的力F与微悬臂的形变△z 之间遵循胡克定律(Hooke Law)F = k·△z其中,k为微悬臂的力常数。

测定微悬臂形变量的大小,就可以获得针尖与样品之间作用力的大小。

针尖与样品之间的作用力与距离有着强烈的依赖关系,所以在扫描过程中利用反馈回路保持针尖和样品之间的作用力恒定,即保持微悬臂的形变量不变,针尖就会随表面的起伏上下移动。

记录针尖上下运动的轨迹即可得到样品表面形貌的信息。

这种检测方式被称为“恒力”模式(Constant Force Mode),是AFM使用最广泛的扫描方式。

AFM的图像也可以使用“恒高”模式(Constant Height Mode)来获得,也就是在x、y扫描过程中,不使用反馈回路,保持针尖与参考水平面之间的距离恒定,检测器直接测量微悬臂z 方向的形变量来成像。

这种方式由于不使用反馈回路,可以采用更高的扫描速度,通常在观察原子、分子像时用得比较多,而对于表面起伏较大的样品不适合。

图1 AFM原理示意图2. AFM的工作模式当AFM的针尖与样品表面原子相互作用时,通常有几种力同时作用于微悬臂,其中最主要的是范德瓦尔斯力(Van der Waals forces)。

针尖与样品表面原于间的范德瓦尔斯力与距离关系曲线如图2所示。

中南大学数据库实验报告

中南大学数据库实验报告

中南大学数据库实验实验题目班级姓名学号一、实验内容实验一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。

2.创建所有表的关系图。

3.列出所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)4.对Recipient表和Country表中的cCountryId属性定义一个用户自定义数据类型,并将该属性的类型定义为这个自定义数据类型。

5.把价格在$20以上的所有玩具的材料拷贝到称为PremiumToys 的新表中。

6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。

7.不修改已创建的Toys表,利用规则实现以下数据完整性:(1)玩具的价格应大于0;(2)玩具的重量应缺省为1。

8.给id为‘000001’玩具的价格增加$1。

实验二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。

2.显示定单号码、商店ID,定单的总价值,并以定单的总价值的升序排列。

3.显示在orderDetail表中vMessage为空值的行。

4.显示玩具名字中有“Racer”字样的所有玩具的材料。

5.根据2000年的玩具销售总数,显示“Pick of the Month”玩具的前五名玩具的ID。

6.根据OrderDetail表,显示玩具总价值大于¥50的定单的号码和玩具总价值。

7.显示一份包含所有装运信息的报表,包括:Order Number,Shipment Date, Actual Delivery Date, Days in Transit. (提示:Days in Transit = Actual Delivery Date –Shipment Date)8.显示所有玩具的名称、商标和种类(Toy Name, Brand, Category)。

中南大学操作系统安全课设任务管理器

中南大学操作系统安全课设任务管理器

操作系统安全课程设计实验报告题目:任务管理器学院:信息科学与工程学院专业班级:信息安全1401班指导老师:胡小龙学号:0906140106姓名:孙毅目录第一章前言 (3)第二章概述 (3)2.1 课程设计目的 (3)2.2设计的任务与要求 (3)2.2.1设计任务: (3)2.2.2具体要求: (3)第三章设计的基本概念和原理 (3)3.1流程分析 (4)3.2特色功能 (4)3.3运行环境 (4)第四章详细设计 (5)4.1模块实现 (5)4.1.1应用程序 (5)4.1.2进程 (8)4.1.3模块 (11)第五章完成情况 (14)5.1. 实验结果截图 (14)5.2. 结果讨论 (17)第六章总结 (18)6.1. 结束语 (18)鸣谢 (20)参考文献 (20)第一章前言Windows任务管理器提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。

它的用户界面提供了文件、选项、查看、窗口、关机、帮助等六大菜单项,其下还有应用程序、进程、性能、联网、用户等五个标签页,窗口底部则是状态栏,从这里可以查看到当前系统的进程数、CPU使用比率、更改的内存<容量等数据,默认设置下系统每隔两秒钟对数据进行1次自动更新,也可以点击“查看→更新速度”菜单重新设置。

第二章概述2.1 课程设计目的操作系统安全是整个计算机系统安全的重要基础,主要针对操作系统层面的安全进行剖析,是上层运行的重要保证。

与计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。

本课程设计的目的综合应用学生所学知识,建立安全系统的概念,理解和巩固操作系统基本理论、原理和方法,掌握安全操作系统开发的基本技能。

2.2设计的任务与要求2.2.1设计任务:进程监控程序的设计与开发2.2.2具体要求:(1)可获取当前正在运行的所有进程,包括进程PID、进程名称、CPU使用情况、当前用户名、内存占用量等;(2)能进一步获取各进程的所有线程情况;(3)能通过命令终止某个进程的执行,终止时能将其子孙进程全部终止;(4)要求界面友好。

中南大学大学物理实验报告答案大全+实验数据+思考题答案

中南大学大学物理实验报告答案大全+实验数据+思考题答案
max S max S
(1) 按讲义中的电路原理图连接好实物电路图; (2) 测光电管的伏安特性曲线: ① 先使正向电压加至30伏以上,同时使光电流达最大(不超量程), ② 将电压从0开始按要求依次加大做好记录; (3) 测照度与光电流的关系: ① 先使光电管距光源20cm处,适当选择光源亮度使光电流达最大(不超量程); ② 逐渐远离光源按要求做好记录; 实验步骤 (4) 测光电管的截止电压: ① 将双向开关换向; ② 使光电管距光源20cm处,将电压调至“0”, 适当选择光源亮度使光电流达最大(不超量程),记录此时的光 电流I ,然后加反向电压使光电流刚好为“0”,记下电压值U ; ③ 使光电管远离光源(光源亮度不变)重复上述步骤作好记录。 数据处理
k
(a + b) sin ψ
k
如果人射光不是单色,则由上式可以看出,光的波长不同,其衍射角也各不相同,于是复色光将被分解,而在中央 k =0、 ψ =0 处,各色光仍重叠在一起,形成中央明条纹。在中央明条纹两侧对称地分布着 k=1,2,3,…级光谱 ,各级光谱 线都按波长大小的顺序依次 排列成一组彩色谱线,这样就把复色光分解为单色光。如果已知光栅常数,用分光计测出 k 级光谱中某一明条纹的衍射角ψ,即可算出该明条纹所对应的单色光的波长λ。 实验步骤 (1) 调整分光计的工作状态,使其满足测量 条件。 (2) 利用光栅衍射 测量汞灯在可见光范 围内几条谱线的波长。 ① 由于衍射光谱在中央明条纹两侧对 称地分布,为了提高测量的准确度,测量第k级光谱时 ,应测出 +k级和-k 级光谱线的位置,两位置的差值之 半即为实验时 k取1 。 ② 为了减少分光计刻度盘的偏心误差,测量每条光谱线时 ,刻度盘上的两个游标都要读数 ,然后取其平均值 (角 游标的读数方法与游 标卡尺的读数方法基本一致)。 ③ 为了使十字丝对准光谱线,可以使用望远镜微调螺钉12来对准。 ④ 测量时,可将望远 镜置最右端,从 -l 级到 +1 级依次测量,以免漏测数据。 数据处理 谱线 游标 左1级 (k=-1) 右1级 (k=+1) φ λ/nm λ /nm

中南大学——滚动轴承综合性能测试分析 实验报告

中南大学——滚动轴承综合性能测试分析 实验报告

滚动轴承综合性能测试分析 实验报告一、 实验目的(10分)1. 让学生了解在总轴向和径向载荷作用下,滚动轴承径向载荷分布及变化情况,特别是轴向载荷对滚动轴承径向载荷分布的影响;2. 让学生了解滚动轴承元件上的载荷随时间的变化情况,掌握滚动轴承元件上载荷波动特性。

二、 实验台型号名称及主要组成(10分) 1. 圆锥滚子轴承:1对; 2. 可移动的滚动轴承座:1对;3. 滚动轴承轴向加载装置、径向加载装置:各一套;4. 滚动轴承径向载荷传感器:精度等级:0.05;量程:5000N ,16个;5. 总径向载荷传感器:量程:10000N ,1个;6. 轴向载荷传感器:量程:10000N ,3个;7. 微型电机:YYJ90-180W N=180W;8. 计算机:1台9. 操作面板。

三、 实验数据及曲线打印(40分) 1.静态只加径向载荷2.静态既有径向载荷又有轴向载荷3.动态只加径向载荷四、思考题(40分)1、圆锥滚子轴承受径向载荷后,本实验台为什么就可测出它受有轴向力?(10分提示:从书本内容和实验台相关内容两方面来回答)答:书本内容:圆锥滚子轴承受径向载荷后,由于存在接触角,轴承本身会产生一个轴向力实验台:由于实验台已知接触角,并且有轴向和径向载荷的力传感器,即可以通过受的径向载荷,来计算测出它所受的轴向力。

2、本实验台一对正装的圆锥滚子轴承支撑的轴系受外部轴向载荷后,左右圆锥滚子轴承承受的轴向载荷将怎样变化?(20分提示:先通过派生轴向力及外加轴向载荷的计算与分析,判定被“放松”或被“压紧”的轴承;然后确定被“放松”轴承的轴向力仅为其本身派生的轴向力,被“压紧”轴承的轴向力则为除去本身派生的轴向力后其余轴向力的代数和。

)答:(1)画出本实验台轴向力示意图(F S1表示左轴承内部轴向力,F S2表示右轴承内部轴向力,Fa 表示轴向外载荷方向向左)。

(2)F S2+Fa<F S1 ,则左 被放松(被放松,被压紧),右 被压紧(被放松,被压紧), 则Fa 1= F S1 (用计算式表达) ,则Fa 2= F S1-Fa (用计算式表达) 。

中南大学差热分析实验报告

中南大学差热分析实验报告一.实验目的1.掌握差热分析的基本原理及测量方法。

2.学会差热分析仪的操作,并绘制425CuSO H O 等样品的差热图。

3.掌握差热曲线的处理方法,对实验结果进行分析。

二.实验原理1、差热分析基本原理物质在加热或冷却过程中,当达到特定温度时,会产生物理或化学变化,同时产生吸热和放热的现象,反映了物质系统的焓发生了变化。

在升温或降温时发生的相变过程,是一种物理变化,一般来说由固相转变为液相或气相的过程是吸热过程,而其相反的相变过程则为放热过程。

在各种化学变化中,失水、还原、分解等反应一般为吸热过程,而水化、氧化和化合等反应则为放热过程。

差热分析利用这一特点,通过对温差和相应的特征温度进行分析,可以鉴别物质或研究有关的转化温度、热效应等物理化学性质,由差热图谱的特征还可以用以鉴别样品的种类,计算某些反应的活化能和反应级数等。

在差热分析中,为反映微小的温差变化,用的是温差热电偶。

在作差热鉴定时,是将与参比物等量、等粒级的粉末状样品,分放在两个坩埚内,坩埚的底部各与温差热电偶的两个焊接点接触,与两坩埚的等距离等高处,装有测量加热炉温度的测温热电偶,它们的各自两端都分别接人记录仪的回路中在等速升温过程中,温度和时间是线性关系,即升温的速度变化比较稳定,便于准确地确定样品反应变化时的温度。

样品在某一升温区没有任何变化,即也不吸热、也不放热,在温差热电偶的两个焊接点上不产生温差,在差热记录图谱上是一条直线,已叫基线。

如果在某一温度区间样品产生热效应,在温差热电偶的两个焊接点上就产生了温差,从而在温差热电偶两端就产生热电势差,经过信号放大进入记录仪中推动记录装置偏离基线而移动,反应完了又回到基线。

吸热和放热效应所产生的热电势的方向是相反的,所以反映在差热曲线图谱上分别在基线的两侧,这个热电势的大小,除了正比于样品的数量外,还与物质本身的性质有关。

将在实验温区内呈热稳定的已知物质与试样一起放入一个加热系统中,并以线性程序温度对它们加热。

中南大学牛顿环实验报告

中南大学牛顿环实验报告篇一:牛顿环实验报告等厚干涉——牛顿环【实验目的】(1)用牛顿环观察和分析等厚干涉现象;(2)学习利用干涉现象测量透镜的曲率半径;(3)学会使用读数显微镜测距。

【实验原理】在一块平面玻璃上安放上一焦距很大的平凸透镜,使其凸面与平面相接触,在接触点附近就形成一层空气膜。

当用一平行的准单色光垂直照射时,在空气膜上表面反射的光束和下表面反射的光束在膜上表面相遇相干,形成以接触点为圆心的明暗相间的环状干涉图样,称为牛顿环,其光路示意图如图。

如果已知入射光波长,并测得第k级暗环的半径rk,则可求得透镜的曲率半径R。

但实际测量时,由于透镜和平面玻璃接触时,接触点有压力产生形变或有微尘产生附加光程差,使得干涉条纹的圆心和环级确定困难。

用直径Dm、Dn,有22Dm?DnR?4(m?n)?此为计算R用的公式,它与附加厚光程差、圆心位置、绝对级次无DD关,克服了由这些因素带来的系统误差,并且m、n可以是弦长。

【实验仪器】JCD3型读数显微镜,牛顿环,钠光灯,凸透镜(包括三爪式透镜夹和固定滑座)。

【实验内容】1、调整测量装置按光学实验常用仪器的读数显微镜使用说明进行调整。

调整时注意:(1)调节45玻片,使显微镜视场中亮度最大,这时,基本上满足入射光垂直于透镜的要求(下部反光镜不要让反射光到上面去)。

(2)因反射光干涉条纹产生在空气薄膜的上表面,显微镜应对上表面调焦才能找到清晰的干涉图像。

(3)调焦时,显微镜筒应自下而上缓慢地上升,直到看清楚干涉条纹时为止,往下移动显微镜筒时,眼睛一定要离开目镜侧视,防止镜筒压坏牛顿环。

(4)牛顿环三个压紧螺丝不能压得很紧,两个表面要用擦镜纸擦拭干净。

2、观察牛顿环的干涉图样(1)调整牛顿环仪的三个调节螺丝,在自然光照射下能观察到牛顿环的干涉图样,并将干涉条纹的中心移到牛顿环仪的中心附近。

调节螺丝不能太紧,以免中心暗斑太大,甚至损坏牛顿环仪。

(2)把牛顿环仪置于显微镜的正下方,使单色光源与读数显微镜上45?角的反射透明玻璃片等高,旋转反射透明玻璃,直至从目镜中能看到明亮均匀的光照。

Linux实验报告

中南大学Linux操作系统实验报告学生姓名学院信息科学与工程学院指导老师胡小龙专业班级完成时间目录1.实验一Linux的安装 (3)1.1 实验目的 (3)1.2 实验设备 (3)1.3 实验原理 (3)1.4 实验步骤 (3)2. 实验二Linux基本操作 (5)2.1 实验目的 (5)2.2 实验设备 (5)2.3 实验原理 (6)2.4 实验步骤 (6)3. 实验三Linux系统管理 (10)3.1 实验目的 (10)3.2 实验设备 (10)3.3 实验原理 (10)3.4 实验步骤 (11)4. 实验四Linux Shell程序设计 (14)4.1 实验目的 (14)4.2 实验设备 (14)4.3 实验原理 (15)4.4 实验步骤 (17)5. 实验五Linux 高级程序设计 (20)5.1 实验目的 (20)5.2 实验设备 (21)5.3 实验原理 (21)5.4 实验步骤 (21)6. 实验六Linux内核 (23)6.1 实验目的 (23)6.2 实验设备 (23)6.3 实验原理 (23)6.4 实验步骤 (23)Linux操作系统1.实验一Linux的安装1.1 实验目的(1)了解硬盘分区的概念和方法;(2)掌握硬盘的分区规划;(3)掌握Linux操作系统的安装和配置过程。

1.2 实验设备一台pc机、RedHat Linux 7.2以上版本、VMware Workstation v5.5。

1.3 实验原理Linux可以以多种方式安装在PC机上:(1)独立分区安装、(2)DOS分区安装和(3)虚拟机VMWare下安装。

鉴于VMware下安装对原来系统影响较小且不影响本实验目的,因此采用VMWare下安装方式。

1.4 实验步骤(1)在Windows XP下安装VMware 5.5(2)配置虚拟机(3)启动虚拟机(4)启动Linux安装过程(5)安装过程配置(6)安装后配置(7)第1次启动VMWare下Linux操作系统2.实验二Linux基本操作2.1 实验目的(1)复习Linux基本命令;(2)掌握常用Linux命令。

中南大学近代物理实验报告-X射线衍射实验报告

近代物理实验实验报告实验名称:X射线衍射所在学院:物理与电子学院专业班级:物理升华班1301学生姓名:黄佳清学生学号:0801130117指导教师:黄迪辉一、目的要求(1)掌握X射线衍射仪分析法(衍射仪法)的基本原理和方法。

(2)了解Y-2000型X射线衍射仪的结构、工作原理和使用方法。

二、原理简述(1)X射线产生机理:X射线管的灯丝发射的电子在强磁场的作用下加速,以很高的速度打在金属靶上,从而产生X射线。

其中由于金属给电子带来的巨大的减速作用会使电子发出具有连续波谱的X射线;而若是高速电子将金属原子的内层电子打出,则其他层的电子就会向内跃迁,从而产生具有特定波长的X射线。

故由此得到的X射线是具有特征峰的连续波谱。

其它层向K层跃迁产生的射线统称为K线系(其中L层来的称为Kα线,M层来的称为Kα线),向L层跃迁的称为L线系。

(2)晶体学基础:晶体中的原子、分子或离子都是有规则呈周期性排布的,排布方式称为晶格结构,在晶体学上常取与客观晶体有同等对称性的平行六面体作为构成晶体体积的最小单元,称为晶胞。

(3)X射线衍射机理:由于X射线的波长很小,不可能拿一般的光栅做衍射实验,但晶体中晶胞的线度却跟X射线波长在同一数量级上,因此可以用晶体来做X射线的衍射实验(如图一)。

当两反射光同相时,产生干涉加强,此时满足如下关系式:QA'Q'-PAP'=SA'+A'T=nλ n=0,±1,±2…… 即:2dsinθ=nλ满足此式则在该处能观察到衍射极大,试验中通过测量不同角度在相同时间内所接收到的X 射线粒子数来进行判断,得到极大衍射角也可由上式推得晶格系数d。

图1.晶体衍射原理图三、仪器本实验选用的设备是Y-2000型全自动X射线衍射仪。

下面分别介绍实验中用到的各部分的名称与功能。

其主要结构的示意图如下:图2.Y-2000型X射线衍射仪主要结构示意图(字母与代表含义同图2)图3.X射线光路图四、数据表格及数据处理C u靶产生的X射线的波长λ = 1.54178 Å2dsinθ=nλn=0,±1,±2……(1)Si粉末试样图4.Si粉末试样X射线衍射图谱序号2θ角衍射峰高d值1 28.4 1886 3.14252 47.25 1256 1.92363 56.05 518 1.64074 69.1 120 1.35935 76.35 218 1.24736 87.95 392 1.1102表1.Si粉末试样数据处理(2)Si薄片试样图5.Si薄片试样X射线衍射图谱序号2θ角衍射峰高d值1 28.45 882 3.1371表2.Si薄片试样数据处理五、分析和讨论实验结果通过实验发现Si粉末试样本和Si薄片试样前者峰值比后者多,衍射仪采取样品不动,光管和探测器都与样品成同一角度对称运动,从而探测器接收不到非平行晶面的衍射。

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

计算机操作系统实验报告学院:信息科学与工程学院专业班级:信息安全1302班指导老师:郁博文学号:0906130205计算机操作系统1.设计目的1、增强学生对计算机操作系统基本原理、基本理论、基本算法的理解;2、提高和培养学生的动手能力。

2.设计要求1、每人至少选作1题,多做不限;2、每人单独完成,可以讨论,但每人的设计内容不得完全相同,抄袭或有2人/多人设计完全一样者,不能通过;3、设计完成后,应上交课程设计文档,文档格式应是学校课程设计的标准格式,所有学生的封面大小、格式也必须一样;4、同时上交设计的软盘(或以班刻录光盘)。

3.设计题目调度算法的模拟:模拟各种调度算法,并进行调度性能分析。

4.设计过程4.1 设计思路模拟了一个作业调度算法,其中用到了先来先服务算法(FCFS)、短作业优先算法(SJF)、最高响应比优先算法(HRN)三种算法。

如下,分别为三种算法的程序流程图。

4.2 实验过程图1 - 开始界面图2 –输入作业的信息(名字、提交时间、运行时间)图3 –选择算法(FCFS、SJF、HRN)图4、5 – 选择FCFS 算法后输出结果图6、7 – 选择SJF 算法后输出结果图8、9 – 选择HRN 算法后输出结果4.3 调度性能分析1.先来先服务算法(FCFS)优点:能体现公平性;缺点:一旦一个较长的作业进入系统后就会长时间的占用系统的资源,这样如果有优先级较高的短作业需要执行的话需要等待很长时间。

2.短作业优先算法(SJF)优点:比前者改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高系统的吞吐量;缺点:对长作业非常不利,可能长时间得不到执行,未能一句作业的紧迫程度来划分执行的优先级,难以准确估计作业的执行时间,从而影响调度性能。

3.最高响应比优先算法(HRN)优点:这种算法是对FCFS方式和SJF方式的一种综合平衡。

FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。

因此,这两种调度算法在某些极端情况下会带来某些不便。

HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。

缺点:由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF 法,从而采用HRN方式时其吞吐量将小于采用SJF 法时的吞吐量。

另外,由于每次调度前要计算响应比,系统开销也要相应增加。

5.总结在实验中,由于对算法细节不够熟悉,以及对c语言的遗忘,我遇到了不少困难。

因而,在克服这些困难的过程中,我对FCFS算法有了更加深刻而透彻的理解,c语言的一些基本操作也得到了巩固。

今后我亦将多多练习,毕竟理论与实践结合才是最好的学习方法。

6.代码附录#include <stdio.h>#include <stdlib.h>#define getpch(type)(type*)malloc(sizeof(type))struct worktime{float Tb;//作业运行时刻float Tc;//作业完成时刻float Ti;//周转时间float Wi;//带权周转时间};struct jcb{ /*定义作业控制块JCB */char name[10];//作业名float subtime;//作业提交时间float runtime;//作业所需的运行时间char resource;//所需资源float Rp;//后备作业响应比char state;//作业状态struct worktime wt;struct jcb *link;//链指针}*jcb_ready = NULL, *j;typedef struct jcb JCB;float T = 0;void sort()/* 建立对作业进行提交时间排列函数*/{JCB *first, *second;int insert = 0;if ((jcb_ready == NULL) || ((j->subtime)<(jcb_ready->subtime)))/*作业提交时间最短的,插入队首*/{j->link = jcb_ready;jcb_ready = j;T = j->subtime;j->Rp = 1;}else/* 作业比较提交时间,插入适当的位置中*/{first = jcb_ready;second = first->link;while (second != NULL){if ((j->subtime)<(second->subtime))/*若插入作业比当前作业提交时间短,*/{ /*插入到当前作业前面*/j->link = second;first->link = j;second = NULL;insert = 1;}else/* 插入作业优先数最低,则插入到队尾*/{first = first->link;second = second->link;}}if(insert == 0) first->link = j;}}void SJFget()/* 获取队列中的最短作业 */{JCB *front, *mintime, *rear;int ipmove = 0;mintime = jcb_ready;rear = mintime->link;while (rear != NULL)if ((rear != NULL) && (T >= rear->subtime) && (mintime->runtime)>(rear->runtime)) {front = mintime;mintime = rear;rear = rear->link;ipmove = 1;}elserear = rear->link;if(ipmove == 1){front->link = mintime->link;mintime->link = jcb_ready;}jcb_ready = mintime;}void HRNget()/* 获取队列中的最高响应作业 */{JCB *front, *mintime, *rear;int ipmove = 0;mintime = jcb_ready;rear = mintime->link;while (rear != NULL)if((rear != NULL) && (T >= rear->subtime) && (mintime->Rp)<(rear->Rp)) {front = mintime;mintime = rear;rear = rear->link;ipmove = 1;}elserear = rear->link;if(ipmove == 1){front->link = mintime->link;mintime->link = jcb_ready;}jcb_ready = mintime;}void input()/* 建立作业控制块函数*/{int i,num;printf("\nplese input the number of the job:");scanf("%d", &num,2);for(i = 0; i<num; i++){printf("\nthe ordernumber of the job No.%d:\n", i);j = getpch(JCB);printf("\nplease input the name of the job:");scanf("%s", j->name);printf("\nplease input the time when the job was submitted:");scanf("%f", &j->subtime);printf("\nplease input the runtime of the job:");scanf("%f", &j->runtime);printf("\n");j->state = 'w';j->link = NULL;sort();/* 调用sort函数*/}}int space(){int l = 0;JCB *jr = jcb_ready;while(jr != NULL){l++;jr = jr->link;}return(l);}void disp(JCB* jr, int select)/*建立作业显示函数,用于显示当前作业*/{if(select == 3)printf("\nwork service time response ratio runtime complete time turnover time weighted turnover time\n");elseprintf("\nwork service time runtime complete time turnover time weighted turnover time\n");printf("|%s\t", jr->name);printf("|%.2f\t", jr->runtime);if(select == 3)printf("|%.2f", jr->Rp);if(j == jr)printf("|%.2f\t", jr->wt.Tb);printf("|%.2f", jr->wt.Tc);printf("|%.2f\t", jr->wt.Ti);printf("|%.2f", jr->wt.Wi);}printf("\n");}void check(int select)/* 建立作业查看函数*/{JCB* jr;printf("\n **** the running job is:%s",j->name);/*显示当前运行作业*/ disp(j,select);jr=jcb_ready;printf("\n ****the current ready queue is:\n");/*显示就绪队列状态*/while(jr!=NULL){jr->Rp=(T-jr->subtime)/jr->runtime;disp(jr,select);jr=jr->link;}destroy();}int destroy()/*建立作业撤消函数(作业运行结束,撤消作业)*/{printf("\n job [%s] is completed.\n",j->name);free(j);}void running(JCB* jr)/* 建立作业就绪函数(作业运行时间到,置就绪状态*/ {if (T>=jr->subtime)jr->wt.Tb=T;jr->wt.Tb=jr->subtime;jr->wt.Tc=jr->wt.Tb+jr->runtime;jr->wt.Ti=jr->wt.Tc-jr->subtime;jr->wt.Wi=jr->wt.Ti/jr->runtime;T=jr->wt.Tc;}int main()/*主函数*/{int select=0,len,h=0;float sumTi=0,sumWi=0;input();len=space();printf("\n\t1.FCFS 2.SJF 3.HRN\n\nplease choose a Algorithm:");scanf("%d",&select);while((len!=0)&&(jcb_ready!=NULL)){h++;printf("\n excute %d job \n",h);j=jcb_ready;jcb_ready=j->link;j->link=NULL;j->state='R';running(j);sumTi+=j->wt.Ti;sumWi+=j->wt.Wi;check(select);if(select==2&&h<len-1)SJFget();if(select==3&&h<len-1)HRNget();printf("\n press any key to continue......\n");getchar();}printf("\n\n the job is completed.\n");printf("\t the turnover time of this group of work:%.2f\n",sumTi/h);printf("\t the weighted turnover time of this group of work:%.2f\n",sumWi/h);getchar();}。

相关文档
最新文档