磁盘调度算法的实现精选.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
磁盘调度算法的实现精选

姓名 学号 专业 班级 实验项目 实验三:磁盘调度算法的实现 课程名称 操作系统 课程代码 0668036 实验时间 2011 年11月06日 2011 年11月09日 2011 年12月13日 2011 年12月16日 实验地点 软件实验室7-215 批改意见 成绩 教师签字: 【实验环境】Windows操作系统环境下的个人微机了解操作系统磁盘调度的基本概念,磁盘调度程序的功能,常用的磁盘调度算法。实验要求学生应正确地设计有关的数据结构与各个功能模块,画出程序的流程图,编写程序,程序执行结果应正确。本实验是模拟操作系统的FCFS,SSTF,SCAN,CSCAN和 NStepSCAN算法。 设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。 选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。 按算法的寻道效率进行排序,并对各算法的性能进行分析比较。 【实验原理】 FCFS 这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。 SSTF 该算法选择这样的进程:其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。 SCAN 该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直至再无更外的磁道需要访问时,才将磁臂换向为自外向里移动。 CSCAN CSCAN算法规定磁头单向移动,例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。 NStepSCAN N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列。而每处理一个队列时又是按SCAN算法,对一个队列处理完后,再处理其他队列。 【实验步骤、过程】 1、程序主要流程 (1)手动输入当前的磁道号,该磁道号在0n65536以内(65536是2的16次方),超出范围则需重新输入 (2)手动输入要寻找磁道的范围 (3)主菜单,选择要进行磁道调度算法,此时会随机生成一个在第二步生成磁道范围以内的10个磁道数,由SetDI方法生成,再将生成的随机磁道号以数组形式作为参数被某个算法调用NStepSCAN //N步扫描算法(NStepScan) void N_Step_SCAN(int Han1,int DiscL[]) { int i,m,k; int RLine1[10]; NAll=0; m=2; k=9; //限定10个磁道数 i=-1; CopyL(DiscL,RLine1,9); //复制磁道号到临时数组RLine printf(\n按照N_Step_SCAN算法磁道的访问顺序为:); for(m=0;m2;m++) //由于限定10磁道数,将10个磁道数分为两组,每组5个磁道数,每个组按照SCAN算法执行,该循环循环2次 { Han1=SCAN(Han1,RLine1,i+1,i+5); i=i+5; } Best[Jage][1]=NAll;//Best[][1]存放移动磁道数 Best[Jage][0]=5;//Best[][0]存放算法的序号为:5 Aver=((float)NAll)/10;//求平均寻道次数 printf(\n移动磁道数:%5d ,NAll); printf(\n平均寻道长度:*%0.2f* ,Aver); } 按算法的寻道效率进行排序 //寻道长度由低到高排序 void PaiXu() { int i,j,Temp; for(i=0;i5;i++) { for(j=0;j4;j++) { if(Best[j][1]Best[j+1][1]) //如果前一个算法的移动磁道距离大于后一个移动磁道数,执行下面语句 { Temp=Best[j+1][1]; //从这起下三行执行冒泡法将移动距离大小排序,排完后则执行每个算法的排序 Best[j+1][1]=Best[j][1]; Best[j][1]=Temp; Temp=Best[j+1][0]; //将每个算法的序号用冒泡法排序 Best[j+1][0]=Best[j][0]; Best[j][0]=Temp;

文档评论(0)

bodkd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档