磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先

上传人:xmg****18 文档编号:121240569 上传时间:2020-02-19 格式:DOC 页数:18 大小:144KB
返回 下载 相关 举报
磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先_第1页
第1页 / 共18页
磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先_第2页
第2页 / 共18页
磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先_第3页
第3页 / 共18页
磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先_第4页
第4页 / 共18页
磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先》由会员分享,可在线阅读,更多相关《磁盘移臂调度过程模拟设计_电梯算法_最短寻道时间优先(18页珍藏版)》请在金锄头文库上搜索。

1、. . .学 号: 课 程 设 计题 目磁盘移臂调度过程模拟设计-电梯算法、最短寻道时间优先算法学 院计算机科学与技术学院专 业班 级姓 名指导教师吴利军2013年1月15日课程设计任务书学生姓名: 指导教师:吴利军 工作单位: 计算机科学与技术学院 题 目: 磁盘移臂调度过程模拟设计电梯算法、最短寻道时间优先算法初始条件:1预备内容:阅读操作系统的文件管理章节内容,理解有关文件组织形式、存储设备的概念。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1编程序模拟磁盘调度的过程,采用指定算法,模拟并输出存取臂的移动顺序

2、,并计算存取臂移动的磁道总数。 能够处理以下的情形: 可根据需要输入当前磁头的位置,磁头移动方向; 能够输入柱面数,磁道访问序列等参数,并能够显示调度结果(磁盘访问请求的磁道号以及磁头移动的总磁道数)。2设计报告内容应说明: 课程设计目的与功能; 需求分析,数据结构或模块说明(功能与框图); 源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);v)对实验题

3、的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收,撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日磁盘移臂调度过程模拟设计电梯算法、最短寻道时间优先算法1 课程设计目的与功能操作系统课程设计,主要是在学习操作系统课程并完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,进一步分析各个部分之间的联系,以达到对完整系统的理解。有助于提高运用操作系统知识解决实际问题的能力

4、;锻炼实际的编程能力及创新能力;提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。本课程设计是通过设计一个磁盘调度模拟系统,深入理解磁盘的工作原理,从而使磁盘调度更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对磁盘调度算法的理解。具体实现为,运用一门高级编程语言编写程序模拟磁盘调度的过程,采用先来先服务算法和电梯算法,模拟并输出存取臂的移动顺序,并计算存取臂移动的磁道总数。能够处理以下的情形: (1)可根据需要输入当前磁头的位置,磁头移动方向; (2)能够输入柱面数,磁道访问序列等参数,并能够显示调度结果(磁盘访问请求的磁道号以及磁头移动的总磁道数)。2 需求分

5、析2.1磁盘的工作原理磁盘是最典型的直接存取设备。磁盘设备允许文件系统直接存取磁盘上的任意物理块。为了存取一个特定的物理块,磁头将直接移动到所要求的位置上,而不需要像顺序存取那样事先存取其他的物理块。磁盘机各类很多,但一般由一些磁盘片组成的磁盘组组成。其中每个磁盘片对应一个装有读写磁头的磁头臂,磁头臂上的两个读写磁头分别对磁盘片的上下两面进行读写。系统在对磁盘进行初始化处理时,把每个磁盘片分割成一些大小相等的扇区。在磁盘转动时经过读写磁头所形成的圆形轨迹称为磁道。由于磁头臂可沿半径方向移动,因此,磁盘上有多条磁道。另外,人们通常把所有磁盘片的相同磁道称为一个柱面,因此,磁盘上每个物理块的位置可

6、以用柱面号、磁头号和扇区号表示,这些地址和物理块号一一对应。2.2磁盘的调度算法操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法先考虑优化查找策略,需要时再优化旋转等待策略。主要的磁盘调度算法有下面四种:(1)先来先服务算法(FCFS):这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到

7、处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。(2)最短寻道时间优先算法(SSTF):该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。(3)扫描算法(SCAN)

8、,即电梯算法:扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,

9、但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。(4)循环扫描算法(CSCAN):循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的, 当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。3数据结构或模块说明3.1数据结构程序中涉及到的主要数据结构如下:变量名类型说明totalint磁盘柱面

10、总数locationint磁头初始位置directionint磁头初始移动方向nint申请访问的磁道序列数组的元素个数aint临时存储访问序列的数组,长度为MAX(MAX=100)mint磁头移动的总磁道数3.2函数程序中有三个函数: void sorting( )初始化柱面总数、磁头初始位置、磁头初始移动方向、申请访问的磁道序列。 void sstf( )对磁盘移臂调度的最短寻道时间优先算法进行模拟,输出磁道访问序列和磁头移动的总磁道数。 void scan( )对磁盘移臂调度的电梯算法进行模拟,输出磁道访问序列和磁头移动的总磁道数。3.3模块框图程序分为四大模块,分别为数据初始化、访问序列

11、排序,电梯算法调度和最短寻道时间优先算法调度,依靠sorting,scan,sstf三个函数实现。程序总流程如下: 开始是否开始程序设置磁盘柱面数total设置当前磁头的位置locationLocationtotal设置要访问的磁道数nnMAX报错报错设置此道访问序列anaitotal或ai0报错调用sorting()调用sstf()调用scan()结束YNNYNYNY初始化4 源程序#include#include#define MAX 20int run_number; /记录实际柱面数int runMAX; /记录每道的磁道序列int run_jiluMAX;int daoshu;boo

12、l FLAG_USEDMAX;int abs_LONGTHMAX;int abs_number(int a,int b)if(ab)return a-b;elsereturn b-a;int cmp(const void *a,const void *b)int x=*(int *)a;int y=*(int *)b;return (xy?1:0);/电梯算法,当flag=false向下走void SCAN(int run,int run_jilu,int run_begin,bool flag) int jilu,j,i; bool flag_t=false; /如果开始位置在序列中就继续执

13、行,否则加入其中 for( i=0;irun_number;i+) if(run_begin=runi) break; if(i=run_number) run_number+=1;runrun_number-1=run_begin; /快排序 qsort(run,run_number,sizeof(int),cmp); for(i=0;i=0;i-) run_jiluj=runi;j+;if(i0)flag_t=true;if(flag_t=true)for(i=jilu+1;irun_number;i+) run_jiluj=runi; j+; daoshu=run_begin-run0+runrun_number-1-run0; if(flag=true) j=0; for(i=jilu;irun_number;i+) run_jiluj=runi; j+; if(i0)flag_t=true; if(flag_t=tru

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号