操作系统磁盘调度算法实验报告_第1页
操作系统磁盘调度算法实验报告_第2页
操作系统磁盘调度算法实验报告_第3页
操作系统磁盘调度算法实验报告_第4页
操作系统磁盘调度算法实验报告_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、. . .目录 .11课设计的 1.1 编目的 . 12课设计容 1 设内容 . 11 模调用系图 . 3 测试据结果. 7 参考献. 10 总. 10学习参考. . .1程1.1 编目本课设计的的是过磁盘度算设计一磁盘度模拟统, 从而磁盘调算法加形象,容使人理,使盘调度特点简 单明,能使用者深对先先服算法、短寻时间优算法扫 描算以及循扫描法等磁调度法的理。2程2.1 设内系统界面可灵活择某种法,法包括先来服务算 (FCFS短道时间先法SSTF描法SCAN环扫描算 法(CSCAN、先先服务算()这是种比较单的盘调度法。根据进请求问磁盘先后 次序行调度此算的优点公平简单,每个程的请都能次 得到理

2、,不出现一进程请求期得不满足情况。算法于 未对道进行化,对磁盘访问求比较的情下,此法将低 设备务的吞量,使平均道时可能较,但进程得服务响 应时的变化度较。2、最寻道时间先算法(SSTF)该算选择这的进,其要访问磁道与前磁所在的道距 离最,以使次的道时间短,算法可得到较好的吐量但 却不保证平寻道间最短其缺是对用的服请求的应机不 是均的,因导致应时间变化度很大服务求很的情况, 对内边缘磁的请将会无期的延迟,些请的响应间将可 预期学习参考. . .3、扫算法()扫描法不仅虑到访问的道与前磁道距离更优先虑的 是磁的当前动方。例如当磁正在自向外动时,描算所 选择下一个问对应是其访问磁道既当前道之外又是离

3、 最近。这样里向地访问直到无更外磁道要访问将磁换 向,外向里动。时,同也是次选择样的程来调,即要 访问磁道,当前道之内从而免了饥现象出现。于这算 法中头移动规律似电梯运行故又称电梯度算法此算基 本上服了最寻道间优先法的务集中中间道和响时间化 比较的缺点而具最短寻时间先算法优点吞吐量大,均 响应间较小但由是摆动的扫方法,侧磁被访问频率低 于中磁道。4、循扫描算法CSCAN循环描算法对扫算法的进。果对磁的访请求是匀分 布的当磁头达磁的一端并反运动时在磁之后的问请相 对较。这是于这磁道刚处理而磁盘一端请求密相当, 且这访问请等待时间较,为解决这情况循环扫算法定 磁头向移动例如只自里外移,当磁移到外的

4、被问磁时, 磁头即返回最里欲访磁,即最小磁号紧着最大道号成 循环进行扫。学习参考. . .3.模图3.1 模调关系图盘调系统先来先服务算法最短寻道时间优扫描算法循环扫描算法退出3.2 模程流程图FCFS 算(先先服)流程开始输入道号按输顺序将道序输出求平寻道长输出动的平磁道结束学习参考. . .SSTF(短寻道间先算法算法程图:开始输入道号使用泡法从到大序输出好序的道序输入前磁道判断前磁头序列的位置选择当前磁距离最近磁道进扫描移动最小()号改向(内)动扫描未描的磁求平寻道长输出动的平磁道结束学习参考. . .SCAN 法(扫算法流程图开始输入道号使用泡法从到大序输出好序的道序输入前磁道判断前磁

5、头序列的位置选 择 动臂 方向开始扫移动最小()号 改向(内)动扫 描未描的磁求平寻道长输出动的平磁道结束学习参考. . .CSCAN 法(环扫描法)程图:开始输入道号使用泡法从到大序输出好序的道序输入前磁道规定动臂单反复的内向外描判断前磁头序列的位置扫描最大号,直 移动最小号内向 扫描扫描的道求平寻道长输出动的平磁道结束学习参考. . .4试输入道序列25 160 78 65 100 62 16 53 45选择法 1,平均寻道度 46.4444;学习参考. . .选择法 2,平均寻道度为 16.6667;选择法 3,磁臂移动向为外向内平均道长度 16.4444学习参考. . .选择法 3,磁

6、臂移动向为内向外平均道长度 31.5556;选择法 4,平均寻道度为 31.4444学习参考. . .5考计机操作修) 操系统教汤子方敏西安子科技学出社 西安子科技学出社操系统实教程第二版爱华清华学出版操系统原与实教程 程设计基教程6结周湘陈家清华版社 机械业出版通过次试验我们楚的了到磁调度的细过和四种度算 法(来先服算法最短寻时间先算法扫描法;循扫描法) 以及种调度法之的差异共性同时,看到经过优的算会 带来好处!在实过程中也遇了不少题,实现扫算法出现了题! 当输的当前磁道不在磁请求列中时程序以正常行,输 入的前的磁号在盘请求列中,程序行时现处理列顺错 误的题,通和同的讨论发现两个循中的变量初

7、设置问 题,过调整,程执行无!以后在实现码的程中,定会加小心防止现低级误导 致程出错!学习参考. . .附:#include#include#include#include#define maxsize 1000/*判断输入数据是否有效*/int decide(char /判输数据是有效int while(stri!=0)if(stri9)return 0;break;i+;return i;/*将字符串换成*/ int trans(char str,int a) 将符串换成字int i;int sum=0;for(i=0;ia;i+)sum=sum+(int)(stri-0)*pow(10,

8、a-i-1);return /*泡序算*/ int *bubble(int cidao,int m)int 学习参考. . .int temp;for(i=0;im;i+) 使用冒法从小到顺序列 for(j=i+1;jcidaoj)temp=cidaoi;cidaoi=cidaoj;cidaoj=temp;cout排序后的磁盘列为;for( i=0;im;i+) /出序结coutcidaoi coutendl;return cidao;/*先来先服务调度算法*/void FCFS(int cidao,int m) 磁号组,个为 mint now;/当前磁道号int sum=0; /寻长度int

9、 int a;char str100;float 平均道长cout盘求序列;for( i=0;im;i+) /先先服的策略出磁请求序 coutcidaoi coutendl;coutstr; /对输数据行有性判断学习参考. . .a=decide(str);if(a=0)cout输入数据的类错误,请新入endl;goto B;elsenow=trans(str,a); 输入当磁号 sum+=abs(cidao0-now);cout盘描序列;for( i=0;im;i+) /出盘扫序列coutcidaoi for(i=0,j=1;jm;i+,j+) 求平均道度sum+=abs(cidaoj-ci

10、daoi);ave=(float)(sum)/(float)(m);coutendl;cout平均寻道长度aveendl;/* 最 短 寻 道 时 间 优 先 调 度 算 法 */void SSTF(int cidao,int m)int int now,l,r;int i,j,sum=0;int a;char str100;float cidao=bubble(cidao,m); 调用冒排序法排coutstr; 对入数据行有性判断a=decide(str);if(a=0)学习参考. . .cout入据的类错误,请新入endl;goto C;elsenow=trans(str,a); 输入前磁

11、号if(cidaom-1=now) /若当磁号大于求序中最大直 接由向内依给予请求服cout=0;i-)coutcidaoi=now) /当磁道小于请序列最小者接 由内外依次予各求服务cout磁盘扫描序列;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1) /若当前磁道号大于求序列 中最者且小最大cout磁盘扫描序列;while(cidaok=0)&(rm) 当磁道在求列范围if(now-cidaol)=(cidaor-now) / 选与当磁道 最近请求给服务学习参考. . .coutcidaol sum+=now-cidaol;now=cidaol;l=l

12、-1;elsecoutcidaor sum+=cidaor-now;now=cidaor;r=r+1;if(l=-1) /头动到序的最号回侧扫仍未描 的磁for(j=r;jm;j+)coutcidaoj=0;j-)coutcidaoj sum+=cidaom-1-cidao0;ave=(float)(sum)/(float)(m);coutendl;cout平均寻长度 aveendl;学习参考. . ./*扫调算* void SCAN(int cidao,int m) /要给当前道号和动臂移 动方int int now,l,r,d;int i,j,sum=0;int a;char str100

13、;float cidao=bubble(cidao,m); 调用冒排序法排coutstr; 对入数据行有性判断a=decide(str);if(a=0)cout入据的类错误,请新入endl;goto D;elsenow=trans(str,a); 输入前磁号if(cidaom-1=now) /若前磁号大请求序中最者,则 直接外向内次给各请求,此情同短寻道先cout=0;i-)coutcidaoi=now) /若当磁号小于求序中最小直 接由向外依给予请求服,此情况最寻道优cout磁盘扫描序列;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1) /若当前磁道号大

14、于求序列 中最者且小最大while(cidaokd;if(d=0) 选择移臂向向内则先内扫描cout=0;j-)coutcidaoj 输向内扫描的列for(j=r;jm;j+) /磁头移动到最号,改变方向外 扫描扫描的道coutcidaoj 输向外扫描的列sum=now-2*cidao0+cidaom-1;else 选移动方向外,则向外描cout磁盘扫描序列;for(j=r;jm;j+)coutcidaoj=0;j-) 磁移动到大号则改变向向 内扫未扫描磁道学习参考. . .coutcidaoj sum=-now-cidao0+2*cidaom-1;ave=(float)(sum)/(floa

15、t)(m);coutendl;cout平均寻长度 aveendl;/*循环扫描调度算法*/void CSCAN(int cidao,int m)int int now,l,r;int i,j,sum=0;int a;char str100;float cidao=bubble(cidao,m); 调用冒排序法排coutstr; 对入数据行有性判断a=decide(str);if(a=0)cout入据的类错误,请新入endl;goto E;elsenow=trans(str,a); 输入前磁号if(cidaom-1=now) /若当磁号大于求序中最大直 接将动臂移到最号磁道次向给予各求服cout

16、磁盘扫描序列;for(i=0;im;i+)学习参考. . .coutcidaoi=now) 若当前磁号小请求列中最者,直接由 内向依次给各请服,此况同短寻优先cout磁盘扫描序列;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1) / 若前道号大于请序列 中最者且小最大cout磁盘扫描序列;while(cidaoknow) 单反复地内外扫描k+;l=k-1;r=k;for(j=r;jm;j+) ; 输出从当磁道外扫的序列 for(j=0;jr;j+) 当描完最号磁头接移动最 小号道,再外扫未扫描磁道coutcidaoj sum=2*cidaom-1+cida

17、ol-now-2*cidao0;ave=(float)(sum)/(float)(m);coutendl;cout平均寻长度 aveendl;void main()学习参考. . .int a;int c; /单项int cidaomaxsize;int i=0,count;char str100;coutstr; /对输数据行有效判断a=decide(str);if(a=0)cout输入数据的类错误,请新入str; /对输入数进有效性断a=decide(str);if(a=0)cout输入据的类错误请新输入endl;elsecidaoi=trans(str,a);i+;count=i-1; 要问的道数cout你输入磁道列为;for(i=0;icount;i+)coutcidaoi 输磁序列coutendl;while(1)学习参考. . .coutendl;cout*endl;cout*系统单 *endl;cout*endl;cout*endl;cout* 1. 先先服务 *endl;cout*endl;cout* 2. 最寻时间优 *endl;cout*endl;cout* 3. 扫调 *endl;cout*endl;cout* 4. 循扫 *endl;cout*endl;cout* 5. 退 *endl;cout*endl;cout*endl;cout

温馨提示

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

评论

0/150

提交评论