磁盘调度算法实验设计报告_第1页
磁盘调度算法实验设计报告_第2页
磁盘调度算法实验设计报告_第3页
磁盘调度算法实验设计报告_第4页
磁盘调度算法实验设计报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 /18实验五磁盘调度算法班级:xxxxxxxxxxxx姓名:xxxxxxxx学号:xxxxxxxxxxxxxxxxxxxxx上级日期:2018年11月成绩:一、实验目的:通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易理解,使磁盘调度的特点更简单明了,加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解二、实验内容1、程序流程图模块调用关系图模块程序流程图输入磁道号按输入顺序将磁道序列输出求平均寻道长度输出移动的平均磁道数FCFS算法(先来先服务)流程图开始输入磁道号V1使用冒泡法从小到大排序X.-1输出排好序的磁道序列输入当前

2、磁道号选择与当前磁道距离最近的磁道进行扫描判断当刖磁头在序列中的位置移动到最小(大)号,改向外(内)移动扫描未扫描的磁道求平均寻道长度输出移动的平均磁道数结束SSTF(最短寻道时间优先算法)流程图SCAN算法(扫描算法)流程图开始结束判断当前磁头在序列中的位置扫描到最大号后,直接移动到最小号从内向外J扫描未扫描的磁道规定移动臂单向反复的从内向外扫描使用冒泡法从小到大排序输出排好序的磁道序列输出移动的平均磁道数输入当前磁道号求平均寻道长度输入磁道号CSCAN算法(循环扫描算法)流程图2、程序源码1.#include2.#include3.#include4.#include5.usingname

3、spacestd;6.#definemaxsize10007/*判断输入数据是否有效*/8.intdecide(charstr)/判断输入数据是否有效9.10.inti=0;11.while(stri!=0)12.13.if(stri9)14.15.return0;16.break;17.18.i+;19.20.returni;21.22./*将字符串转换成数字*/23.inttrans(charstr,inta)/将字符串转换成数字24.25.inti;26.intsum=0;27.for(i=0;ia;i+)28.29.sum=sum+(int)(stri-0)*pow(10,a-i-1)

4、;30.31.returnsum;32.33/*冒泡排序算法*34.int*bubble(intcidao,intm)35.36.inti,j;37.inttemp;38.for(i=0;im;i+)/使用冒泡法按从小到大顺序排列39.for(j=i+1;jcidaoj)42.temp=cidaoi;cidaoi=cidaoj;cidaoj=temp;cout排序后的磁盘序列为:”;for(i=0;im;i+)/输出排序结果coutcidaoi;coutendl;returncidao;/*先来先服务调度算法*/voidFCFS(intcidao,intm)/磁道号数组,个数为m43.44.4

5、4.85.86.intintintnow;/当前磁道号sum=0;/总寻道长度j,i;inta;charstr100;floatave;/平均寻道长度cout”磁盘请求序列为:B:for(i=0;im;i+)coutcidaoicoutendl;coutstr;/对输入数据进行有效性判断a=decide(str);if(a=cout0)/按先来先服务的策略输出磁盘

6、请求序列输入数据的类型错误,请重新输入!”endl;B;/输出磁盘扫描序列gotoelsenow=trans(str,a);/输入当前磁道号sum+=abs(cidao0-now);cout”磁盘扫描序列为:for(i=0;im;i+)coutcidaoi87.for(i=0,j=1;jm;i+,j+)/求平均寻道长度88.89.sum+=abs(cidaoj-cidaoi);90.ave=(float)(sum)/(float)(m);91.92.coutendl;93.cout平均寻道长度:”aveendl;94.95/*最短寻道时间优先调度算法*/96.voidSSTF(intcidao

7、,intm)97.98.intk=1;99.intnow,l,r;100.inti,j,sum=0;101.inta;102.charstr100;103.floatave;104.cidao=bubble(cidao,m);/调用冒泡排序算法排序105.coutstr;/对输入数据进行有效性判断107.a=decide(str);108.if(a=0)109.110.cout输入数据的类型错误,请重新输入!endl;111.gotoC;112.113.else114.now=trans(str,a);/输入当前磁道号115.if(cidaom-1=now)/若当前磁道号大于请求序列中最大者,

8、则直接由外向内依次给予各请求服务116.117.cout=0;i-)119.coutcidaoi=now)/若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务123.124.cout磁盘扫描序列为:;125.for(i=0;im;i+)126.coutcidaoicidao0&nowcidaom-1)/若当前磁道号大于请求序列中最小者且小于最大者130.131.cout磁盘扫描序列为:”;132.while(cidaok=0)&(rm)/当前磁道在请求序列范围内139.140.if(now-cidaol)=(cidaor-now)/选择与当前磁道最近的请求给予服务141.142

9、.coutcidaol;143.sum+=now-cidaol;144.now=cidaol;145.l=l-1;146.147.else148.149.coutcidaor;150.sum+=cidaor-now;151.now=cidaor;152.r=r+1;153.154.155.if(l=-1)/磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道156.157.for(j=r;jm;j+)158.159.coutcidaoj=0;j-)166.167.coutcidaoj;168.169.sum+=cidaom-1-cidao0;西南大学操作系统原理实验报告

10、09.210.211. /1873.174.ave=(float)(sum)/(float)(m);coutendl;cout平均寻道长度:aveendl;78.179.180./xlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxI*1-I-II*1-4*1I.tt:丿0上f、,一I*xlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlx/芥芥芥芥芥

11、芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥TpAtrt=冃.芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥/voidSCAN(intcidao,intm)/先要给出当前磁道号和移动臂的移动方向181.k=1;now,l,r,d;i,j,sum=0;184.int88.189.D:190.191.192.a;charstr100;floatave;cidao=bubble(cidao,m);coutstr;/对输入数据进行有效性判断a=decide(str);if(a=调用冒泡排序算法排序193.cout194.195.196.got

12、oelse)输入数据的类型错误,请重新输入!”endl;D;now=trans(str,a);if(cidaom-1=now)内依次给予各请求服务,此情况同最短寻道优先输入当前磁道号若当前磁道号大于请求序列中最大者,则直接由外向03.cout=0;cidaoicidao0;cout=cout磁盘扫描序列为:”;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1)且小于最大者若当前磁道号大于请求序列中最小者213.214.while(cidaoknow)215.216.k+;217.218.l=k-1;219.

13、r=k;220.coutd;222.if(d=0)/选择移动臂方向向内,则先向内扫描223.224.cout=0;j-)226.227.coutcidaoj;/输出向内扫描的序列228.229.for(j=r;jm;j+)/磁头移动到最小号,则改变方向向外扫描未扫描的磁道230.231.coutcidaoj;/输出向外扫描的序列232.233.sum=now-2*cidao0+cidaom-1;234.235.else/选择移动臂方向向外,则先向外扫描236.237.cout磁盘扫描序列为:;238.for(j=r;jm;j+)239.240.coutcidaoj=0;j-)/磁头移动到最大号

14、,则改变方向向内扫描未扫描的磁道243.244.coutcidaoj;245.246.sum=-now-cidao0+2*cidaom-1;247.248.249.ave=(float)(sum)/(float)(m);250.coutendl;251.cout平均寻道长度:aveendl;252.253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293/*循环扫描调度算法*/.voidCSCAN(intc

15、idao,intm).intk=1;intnow,l,r;.inti,j,sum=0;inta;.charstr100;floatave;.cidao=bubble(cidao,m);/调用冒泡排序算法排序.coutstr;/对输入数据进行有效性判断.a=decide(str);.if(a=0).cout输入数据的类型错误,请重新输入!endl;gotoE;.else.now=trans(str,a);/输入当前磁道号.if(cidaom-1=now)/若当前磁道号大于请求序列中最大者,则直接将移动臂移动到最小号磁道依次向外给予各请求服务,cout磁盘扫描序列为:”;for(i=0;im;i+

16、)coutcidaoi=now)/若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务,此情况同最短寻道优先cout磁盘扫描序列为:;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1)/若当前磁道号大于请求序列中最小者且小于最大者cout磁盘扫描序列为:;while(cidaoknow)/单向反复地从内向外扫描k+;294.295.l=k-1;296.r=k;297.for(j=r;jm;j+)298.299.coutcidaoj;/输出从当前磁道向外扫描的序列300.301.for(j=0;jr;j+)/当扫描完最大号磁道,磁头直接移动到最小

17、号磁道,再向外扫描未扫描的磁道302.303.coutcidaoj;304.305.sum=2*cidaom-1+cidaol-now-2*cidao0;306.307.ave=(float)(sum)/(float)(m);308.coutendl;309.cout平均寻道长度:”aveendl;310.311.voidmain()312.313.inta;314.intc;/菜单项315.intcidaomaxsize;316.inti=0,count;317.charstr100;318.cout请输入磁道序列(0结束):str;/对输入数据进行有效性判断320.a=decide(str

18、);321.if(a=0)322.323.cout输入数据的类型错误,请重新输入!str;/对输入数据进行有效性判断332.a=decide(str);333.if(a=0)334.cout输入数据的类型错误,请重新输入!endl;335.else336.337.338.339.340.341.342.343.344.345.346.347.cidaoi=trans(str,a);i+;count=i-1;/要访问的磁道数cout你输入的磁道序列为:”;for(i=0;icount;i+)coutcidaoi;/输出磁道序列coutcoutendl;350.coutendl;351.cout”

19、*”endl;out11*系统菜单*endl;352.cout*endl;353.cout*endl;354.cout*1.先来先服务*endl;355.cout*endl;356.cout*2.最短寻道时间优先*endl;357.cout*endl;358.cout*3.扫描调度*endl;359.cout*endl;360.cout*4循环扫描*endl;361.cout*endl;362.cout*5.退出*endl;363.cout*endl;while(1)coutendl;364.365.366.367.368.369.370.371.372.373.374.375.376.377.G:coutstr;/对输入数据进行有效性判断endl;a=decide(str);if(a=0)cout输入数据的类型错误,请重新输入!5)cout数据输入错误!请重新输入e=251607B6E100621653岳4+k*常*忙耳耳耳耳屮半*事字字耳耳耳耳*半*事*耳耳耳耳屮半事事字字耳耳耳耳半*事*耳耳耳屮半1&O.46.4444平均寻道长度:46.4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论