您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 磁臂调度扫描调度算法
磁臂调度—扫描调度算法福州大学阳光学院04(1)谢微240492157指导老师:吕书龙摘要:磁臂调度是指当同时有多个访盘要求时在等待时,对这些要求的顺序的确定安排或调整,旨在减少平均磁盘服务时间.磁臂调度由操作系统中的磁盘设备驱动完成,相应的算法称为磁臂调度算法;磁臂调度算法包括两个方面的考虑:首先要根据这些要求所访问的磁道按照某种标准对这些要求排序,旨在减少寻道时间,称为磁臂调度,仅在移动头磁盘中采用;其次对同一磁道多个要求扇区顺序排列,旨在减少延迟时间,称为扇区排队,仅在无控制器磁道缓冲的系统中采用;关键词:扫描调度,先向右再向左,移动磁道数一.设计的背景介绍1.扫描调度(SCANScheduling)算法介绍:磁头总是单向移动的,但到达盘边缘则改变方向,磁头移动中为途中的所有请求服务。在下例中,磁头最初向右移动,则SCAN算法产生的顺序是65,67,98,122,124,183,37,14,如下图所示。如果一个请求到达时其要访问的磁道刚好在磁头移动前方,则该请求立即得到服务,反之如果刚好在磁头后,则要等到磁头返回以后再得到响应.2.2数据文件格式说明(1)文件格式如下:track_numbers:10current_location:90track_serial:141833712465122679888888其中track_numbers:是代表请求访盘的磁道总数current_location:是代表当前磁头所在的磁道号;track_serial:申请访盘的磁道序列;2.3数据结构定义typedefstruct{//定义序列的结构体,其中data为磁道号,flag为访问状态标志intdata;//磁道号intflag;//标志}node;2.4总体流程图写出要访问的磁道的数据结构,该结构包括磁道号data和状态访问标志flag。另外,定义要访问的磁道数track_numbers,当前磁头所在的磁道号current_location和一个动态数组serial用来存放要访问的磁道,其大小等于要访问的磁道数读取文件,并将待访问的磁道序列号存入serial中。并定义一个排序的子函数以供扫描算法使用。该函数按从小到大进行排序用SWITCH语句来实现五种不同的选择:按数字1:FCFS的调度;数字2:扫描算法的调度;数字3:最短路径优先算法的调度;数字5:结束程序,将返回到重新开始调度的界面;除此之外的其他任何按键都将显示选择无效的提示。每做完一种选择都可自动清除界面。5号功能:当改变数据文件后,不须重新编译程序根据界面上的提示,选择相应的功能三.算法的实现四.结论㈠“微琳龙“三人组程序不仅可以满足用户对于磁臂调度的先来先服务,先向右再向左的扫描,最段路径优先这3种算法不同数据的计算要求,可以为用户计算出磁头位移和访问的序列,而且在为创造一个友好界面方面做出了很多努力,比如说在每次演示结束后自动清楚界面,每输入一个字符都会有相应的提示语并有相应的动作,最重要的是当用户临时修改数据文件时,不用重新编译程序,只须按数字键4便可重新开始。㈡在编写代码过程中,我们遇到了很多问题,比如说扫描算法一开始的设计只能适用于静态的情况下,这是因为对动态分配数组空间的掌握不够;解决了这个问题后却发现因为指针的使用错误使得输出乱码,但最后,在老师和同学的帮助下,这些问题都被解决,更重要的是还对这方面的认识加深了一步。㈢通过这次课设,使我们对c语言的运用有了更深的实际了解,我们对于数组和结构的应用还很不够,在这次课设中,使我们加深了对数组和结构的基本用途和一些应用的技巧的了解。此外还对读文件有了更深的认识。与此同时,通过这次课设还使得我们对磁臂调度的原理及算法有了进一不的了解。五.参考资料〈c语言程序设计第2版〉作者:谭浩强清华大学出版社〈操作系统教程作者:孟静高等教育出版社
本文标题:磁臂调度扫描调度算法
链接地址:https://www.777doc.com/doc-4029464 .html