版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告计算机操作系统课程设计题目:磁盘调度算法目录1.需求分析2.总体设计和分类介绍1)先来先服务(FCFS)算法2)最短寻道时间优先(SSTF)算法3)扫描调度(SCAN)算法4)循环扫描(C-SCAN)算法3.课程设计的目的4.课程设计要求5.详细设计和算法流程图1)总流程图2)先来先服务(FCFS)算法流程图033)最短寻道时间优先(SSTF)算法流程图4)扫描调度(SCAN)算法流程图5)循环扫描(C扫描)算法流程图6.课程设计的具体步骤1)定义功能部分的主代码2)先来先服务(FCFS)算法部分主要代码3)最短寻道时间优先(SSTF)算法部分的主代码4)扫描调度(SCAN)算法部
2、分主要代码5) C-SCAN算法部分主代码7.课程设计结果显示,1)先来先服务(FCFS)算法测试结果2)最短寻道时间优先(SSTF)算法的测试结果3)扫描调度(SCAN)算法测试结果4)循环扫描(C-SCAN)算法测试结果8.课程设计概要9.经验之谈10.参考文献磁盘调度算法一.需求分析编译器使用四种磁盘调度算法来调度磁盘,它们是先来先服务(FCFS)算法、最短寻道时间优先(SSTF)算法、扫描调度算法和循环扫描算法。二。总体设计和分类介绍磁盘调度常用的算法有四种,它们的作用如下:1.先来先服务算法。先来的请求首先被回答。FCFS策略看起来相当公平,但是当请求的频率太高时,FCFS策略的响应
3、时间会大大延长。FCFS策略为我们建立了一个随机访问机制的模型,但是如果我们用这个策略反复响应从内部到外部的请求,会消耗大量的时间。为了最小化寻道时间,我们似乎需要对等待的请求进行适当的排序,而不是简单地使用FCFS策略。这个过程称为磁盘调度管理。有时FCFS也被认为是最简单的磁盘调度算法。2.最短寻道时间优先(SSTF)算法。所需要的磁道离当前磁头所在的磁道最近,以尽量减少每次寻道的时间。3.扫描调度算法。该算法不仅考虑了待访问磁道与当前磁道之间的距离,还优先考虑了磁头的当前移动方向。例如,当磁头从内向外移动时,扫描算法考虑的下一个访问对象应该是它想要访问的磁道,该磁道不仅在当前磁道之外,而
4、且是最近的磁道。通过这种方式,从内向外访问磁道,直到不再有磁道需要访问,然后将磁道反转并从外向内移动。此时每次也选择这个过程进行调度,即当前要访问的位置是最近的一个,使磁头从外到内逐渐移动,直到不再有磁道要访问,从而避免了“饥饿”现象。4.圆形扫描(C扫描)算法。当磁头刚刚从内向外移动并穿过某个磁道时,就有另一个进程请求访问该磁道。这时候里程必须等。为了减少这种延迟,CSCAN算法要求磁头向一个方向移动。在这个实验中,我们将磁头设计成从内向外移动,但它只需要在从外向内移动时改变方向。这个实验还没有实现。但是这个实验可以充分演示圆形扫描的全过程。三。课程设计的目的1.熟悉并掌握磁盘管理系统的设计
5、方法,加深对各种磁盘调度算法及其特点的理解。2.掌握磁盘调度的基本概念,比较各种磁盘调度算法的优缺点。四。课程设计要求从课程设计的目的出发,贯穿设计工作的各个环节,满足以下设计要求:1.正确分析系统的功能模块和控制模块;2.系统设计应切合实际;3.程序设计简洁、可用、全面和可靠;4.说明和流程图应该清晰。5.详细设计和算法流程图1.总流程图输入轨道的数量输入轨道的数量输入所需功能的前端编号。开始输入从1到4的数字?输入当前曲目编号。结论数字是0?输入误差结果显示目标2.FCFS算法流程图开始开始sum=0,j,I,first=0,现在I = 0;I n;i+确定磁头的位置。计算总和i=0,j
6、= 1;j n;i+,j+first+=abs(aj-ai)sum+=first+abs(now-a0)移动的轨道总数目标3.最短寻道时间优先(SSTF)算法流程图开始开始for(I = 0;I n;i+)cout aI ;sum = an-1-现在;I = 0;I n;i+j = I+1;j = 0;I-)cout aI ;sum = now-a0;顺序轨迹显示aIajif(an-1=now)while(ak = 0)& &(r n)移动的轨道总数目标4.扫描调度算法流程图for(j = I+1for(j = I+1;j n;j+)按递增顺序排列的轨道for(I = 0;I n;i+)int
7、 a,int n开始for(I = 0;I n;i+)if(an-1=now)int d;While(aknow)循环确定头部进入的方向。移动的轨道总数目标传播传播5.C扫描算法流程图int aint a,int nfor(I = 0;I n;+)循环for(I = 0;I n;+)循环按递增顺序排列的轨道for(I = 0;I n;+)循环开始if(an-1=now)磁头位于两侧的磁道之间。确定头部进入的方向。移动的轨道总数目标不及物动词课程设计的具体步骤1.定义功能部分的主要代码。#包含#包括使用命名空间stdvoid FCFS(int a,int n);void SSTF(int a,i
8、nt n);void SCAN(int a,int n);void CSCAN(int a,int n);2.先来先服务(FCFS)算法部分的主要代码void FCFS(int a,int n)int sum=0,j,I,first=0,nowCout 现在;/确定当前磁头位置。Cout 磁盘调度顺序是: endlfor(I = 0;I n;i+)cout aI ;for(i=0,j = 1;j n;i+,j+)first+= ABS(aj-aI);sum+= first+ABS(now-a0);cout endlcout 移动的磁道总数是: sum endl3.最短寻道时间优先(SSTF)算
9、法的主要代码for(I = 0;I n;i+)for(j = I+1;j aj)temp = aI;aI= aj;aj= temp;If(an-1 = 0;我-)cout aI ;sum = now-a0;If(l=-1)/已经访问了磁头位置内侧的磁道。for(j = r;j n;+)/访问磁头位置以外的轨道。cout aj -1;j-)/访问磁头位置内部的磁道。cout aj ;sum+= an-1-a0;cout endlCout 移动的磁道总数是: sum endl4.扫描调度算法的主要代码void扫描(int a,int n)内部温度;int k = 1;int now,l,r;int
10、 i,j,sum = 0;for(I = 0;I n;i+)If(an-1 = 0;我-)cout aI ;sum = now-a0;5.C扫描算法的主要代码void CSCAN(int a,int n)内部温度;int now,l,r;int i,j,sum = 0;int k = 1;for(I = 0;I n;i+)If(an-1=now)/磁头位置大于要访问的最外面的磁道。for(I = 0;I n;i+)cout aI ;sum = now-2 * a0+an-1;七。课程设计的结果表明1.先来先服务(FCFS)算法测试结果2.最短寻道时间优先(SSTF)算法的测试结果3.扫描调度算
11、法测试结果4.C扫描算法的测试结果八。课程设计概要电脑是非常重要和常用的外接设备,其配置有一定的配置策略。在操作系统中,对磁盘的作业请求通常是排队的,这就需要一些高效的磁盘分配策略。(1)先来先服务算法是最简单的磁盘调度算法。它直接按照作业请求的顺序搜索磁盘,既公平又简单。每个作业的磁盘请求都可以处理,不会出现某个作业的请求长时间得不到满足,但寻道方案没有优化的情况;(2)最短寻道时间优先算法优先考虑最接近当前磁头位置的操作磁道请求,可以使每次寻道花费的时间最短,但不能保证平均周转时间和加权周转时间最短;(3)电梯算法同时考虑下一个作业轨道请求和当前磁头位置之间的距离以及当前磁头的移动方向。首
12、先,选择当前磁头外最近的磁道进行访问,直到不再有磁道请求。然后,磁性臂被反转以访问最接近磁头侧的当前磁头位置的作业磁道请求,从而避免饥饿现象。每个作业磁盘请求都可以处理,寻道时间相对较短。(4)N _ Scan算法同时考虑了下一个作业磁道请求与当前磁头位置之间的距离和当前磁头移动方向,但每次磁臂改变方向时,都会同时处理磁头向一侧移动过程中输入的作业请求。首先,选择当前磁头外最近的磁道进行访问,直到不再有磁道请求。接下来,一起考虑头移动到外部期间输入的作业请求和头侧未处理的作业跟踪请求。这种算法更有利于中间航迹的要求。总之,各种算法都有各自的优缺点,在实际应用中需要权衡利弊,选择最佳的一种,才能
13、达到最好的效果。九。经验和体会在这几天的课程设计中,因为之前做过类似的实验,所以很快就完成了第一个实验的设计流程图。但是在接下来的编码阶段,出现了大问题,耗费了大量时间。好在有老师耐心细致的指导,一步一步的验证,一点一点的修正。每次运行都看到误差在慢慢减少,不断逼近正确的设计结果,最终取得了成功。因为自己的知识和能力不到位,在课程设计时间里经历了很多困难和挑战,但是我觉得这个过程中的每一次错误和失败都让我收获了很多,让我成长了很多。当然,这个磁盘调度系统的设计还远远不够完善,还有很多需要改进的地方。比如界面可以更友好,可以节省资源,可以优化算法。但是时间和经历有限,我只能在课程设计允许的时间内
14、做这件事。我会在业余时间自己完善磁盘调度算法程序。每一次课程设计都是强化你所学知识的难得机会。在课程设计的每一步实施中,都要认真反复的去做,因为一个小小的失误都会导致课程设计结果的巨大偏差。完成一个成功的设计会让你学到很多东西,你可以清楚的看到自己的不足,查漏补缺,不断学习。通过自己的动手动脑,不仅增长了见识,也提高了专业知识和技能,对提高自己的思维能力和操作能力有很大的帮助。同时,我会更加努力学习,争取在以后的课程中做得更好!X.参考计算机操作系统清华大学清华大学计算机操作系统实验指南附录:#包含#包括使用命名空间stdvoid FCFS(int a,int n);void SSTF(int
15、 a,int n);void SCAN(int a,int n);void CSCAN(int a,int n);int main()int n;/音轨数量int s;/功能号Cout 请输入当前曲目的编号,按Enter键显示生成的随机曲目编号: n;int * a = new intn;Cout 生成的随机轨道号为:;srand(无符号)时间(空);for(int I = 0;I n;i+)aI=(rand()% 100)+1;cout aI ;cout endlwhile(1) cout endlcout endl;endl磁盘调度算法的函数列表;cout endl;Cout 1,先来先服
16、务算法(FCFS)endl;cout endl;Cout 2,最短寻道时间算法(sstf)endl;cout endl;cout “3,扫描算法” endl;cout endl;Cout 4,循环扫描算法(cscan)endl;cout endl;Cou 0,退出endl;cout endl;cout endlCout s;如果(s4)Cout 数据输入错误!请重新输入: endl其他开关案例0:退出(0);打破;案例1:FCFS(a,n);打破;案例2:SSTF(阿尔巴尼亚);打破;情况三:扫描(a,n);打破;案例四:CSCAN(a,n);打破;返回0;/先来先服务调度算法(FCFS)vo
17、id FCFS(int a,int n)int sum=0,j,I,first=0,nowCout 现在;/确定当前磁头位置。Cout 磁盘调度顺序是: endlfor(I = 0;I n;+)/按照访问顺序输出轨道号。cout aI ;/计算总和for(i=0,j = 1;j n;i+,j+)first+= ABS(aj-aI);/外围轨迹和最内部轨迹之间的距离sum+= first+ABS(now-a0);cout endlcout 移动的磁道总数是: sum endl/最短寻道时间算法(SSTF)void SSTF(int a,int n)内部温度;int k = 1;int now,l
18、,r;int i,j,sum = 0;/按升序排列曲目编号for(I = 0;I n;i+)for(j = I+1;j aj)temp = aI;aI= aj;aj= temp;按升序排列的Cout 轨道显示为: endlfor(I = 0;I n;i+)cout aI ;/输出有序的轨道序列。cout endlCout 现在;/确定当前磁头位置。Cout 磁盘调度顺序是: endlIf(an-1 = 0;我-)cout aI =now)/当前磁头位置小于要访问的最里面的磁道。for(I = 0;I n;i+)cout aI ;sum = an-1-现在;其他While(ak=0)&(rn)I
19、f(now-al)=(ar-now)/选择靠近头部的曲目。cout al ;sum+= now-al;now = al;l = l-1;其他cout ar ;sum+= ar-now;now = ar;r = r+1;If(l=-1)/已经访问了磁头位置内侧的磁道。for(j = r;j n;+)/访问磁头位置以外的轨道。cout aj -1;j-)/访问磁头位置内部的磁道。cout aj ;sum+= an-1-a0;cout endlCout 移动的磁道总数是: sum endl/扫描算法(扫描)void扫描(int a,int n)内部温度;int k = 1;int now,l,r;i
20、nt i,j,sum = 0;for(I = 0;I n;+)/按降序输出访问的轨迹。for(j = I+1;j aj)temp = aI;aI= aj;aj= temp;Cout 按升序排列的曲目是: endlfor(I = 0;I n;i+)cout aI ;cout endlCout 现在;/下面的算法决定了轨道访问顺序If(an-1 = 0;我-)cout aI =now) /磁头位置小于要访问的最里面的磁道。for(I = 0;I n;i+)cout aI ;sum = an-1-现在;Else /磁头位置在最里面的磁道和最外面的磁道之间。 int d;while(ak现在)/确定当前轨道在有序序列中的位置。k+;l = k-1;/头位置之前要访问的轨道r = k;/磁头想要访问磁道Cout d;/确定磁头访问的方向Cout = 0;j -)cout aj ;for(j = r;j n;j+)cout aj ;sum = now-2 * a0+an-1;If(d=1) /出发for(j = r;j n;j+)cout aj = 0;j -)cout aj ;sum = 2 * an-1-now-a0;其他Cout 请输入0或1!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第二章 疾病概论课件
- 治疗室、换药室、处置室消毒隔离制度
- 管道打压吹扫方案
- 环境保护专项施工方案
- 浙教版2021-2022学年度七年级数学上册模拟测试卷 (826)【含简略答案】
- Metixene-hydrochloride-hydrate-Standard-生命科学试剂-MCE
- Methyl-D-galactoside-Methyl-D-Galactopyranoside-生命科学试剂-MCE
- meso-Erythritol-Standard-生命科学试剂-MCE
- 教师面试之课程设计
- 教师节课程设计
- 中考数学一轮复习课件全等三角形
- 新教科版科学六年级上册第三单元工具与技术表格式核心素养目标教案
- 2022-2023学年北京市西城区三帆中学七年级(上)期中数学试卷
- 国测省测四年级劳动质量检测试卷
- 2024-2029年安徽省家具行业分析及发展前景预测报告预测
- 英语四级单词4500
- (高清版)TDT 1031.3-2011 土地复垦方案编制规程 第3部分:井工煤矿
- 2023年10月自考02187电工与电子技术试题及答案含评分标准
- 生产前的准备工作
- 专科器械处理流程培训课件
- 六年级上册数学心得体会
评论
0/150
提交评论