操作系统磁盘调度算法源代码_第1页
操作系统磁盘调度算法源代码_第2页
操作系统磁盘调度算法源代码_第3页
操作系统磁盘调度算法源代码_第4页
操作系统磁盘调度算法源代码_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、主界面void display()coutnnnnOperating Systems Curriculum Designn;cout nr n ;coutn1I ;coutn1名称:磁盘调度I ;coutn1I ;coutn|工具:Visual Studio 2010I ;coutn1I ;coutn|班级:1205I ;coutn|I ;coutn|作者:xxxxI ;coutn|I ;coutn|学号:1324256688I ;coutn|I ;coutnLnsystem(pause);system(cls);前言提示用户此程序实现的算法cout【载入完成】endlendl;cout前言e

2、ndlendl;cout 欢迎使用磁盘调度算法系统,本程序实现了常用的磁盘调度算法如下所示:nn;cout 最短寻道时间优先(SSTF):最短寻道时间优先算法要求访问的磁盘与当前磁头所在 的 n;cout磁盘距离最近,以使每次的寻道时间最短。nn;cout扫描算法(SCAN)电梯调度:扫描算法不仅考虑到欲访问的磁道与当前磁道的距离/;cout更优先考虑的是磁头的当前移动方向。nn”;system(pause);system(cls);/清屏用户选择所使用的算法(先随机生成101个磁道号)void showMenu(int cidao,int n)int choice;while(true)co

3、ut请您选择喜欢的算法来实现调度(输入1-3):; TOC o 1-5 h z coutnr;coutn|;coutn| 1.最短寻道时间优先(SSTF) | ;coutn|;coutn|2.扫描算法(SCAN)|;coutn|;coutn|3.退出(EXIT)|;coutn|;coutn匚n;coutendl;while(true)coutchoice;switch(choice) /*case 1:FCFS(a,n);break;*/case 1:SSTF(cidao,n);break;case 2:SCAN(cidao,n);break;case 3:cout=cidaom-1直接从小到

4、大给予找到离now寻道直接从大到小给磁道服务时间最短的磁道予磁道服务1优先服务离4now最近的磁/*最短寻道时间优先调度算法 */ void SSTF(int cidao,int m)system(cls);int k=1;int now,l,r;int i,j,sum=0;int a;char str100;float ave;cidao=bubble(cidao,m);/调用冒泡排序算法排序coutstr; /对输入数据进行有效性判断a=decide(str);if(a=0)cout输入数据的类型错误,请重新输入! endl; goto C;elsenow=trans(str,a); /输

5、入当前磁道号if(cidaom-1=now)/若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务cout=0;i-)coutcidaoi=now)/若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务cout磁盘扫描序列为:;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1)/若当前磁道号大于请求序列中最小者且小于最大者cout磁盘扫描序列为:;while(cidaoknow)/确定当前磁道在已排的序列中的位置,后面的算法都用到了,可以直接复制后少量修改,节省时间。k+;l=k-1;r=k;while(l=0)&(rm)/当前磁

6、道在请求序列范围内if(now-cidaol)=(cidaor-now)/选择与当前磁道最近的请求给予服务coutcidaol;sum+=now-cidaol;now=cidaol;l=l-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总的寻道长度:sumendl;cout

7、平均寻道长度:aveendl;cout请按任意键返回系统菜单endl;getch();showMenu(cidao,m);最 短 寻 道 时 间 优 先(SSTF ) 算 法 实 现 界 面扫描算法(SCAN)(1)算法分析I优点:排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了 SSTF算法的不公平性,但仍有利于对中间磁道的请求。II缺点:新进来的访问此磁道的进程的请求会被大大地推迟。增加延迟。SCAN算法又称电梯调度算法。SCAN算法是磁头前进方向上的最短查找时间优先算 法。注:“电梯调度”算法是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动 臂最近的那个柱访问者

8、,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。这 好比乘电梯,如果电梯已向上运动到4层时,依次有3位乘客张一、张二、张三在等候乘电梯。 他们的要求是:张一在2层等待去10层;张二在5层等待去底层;张三在8层等待去15层。 由于电梯目前运动方向是向上,所以电梯的形成是先把乘客张三从8层带到15层,然后电梯 换成下行方向,把乘客张二从5层带到底层,电梯最后再调换方向,把乘客张一从2层送到10层。我们仍用前述的同一例子来讨论采用“电梯调度”算法的情况。由于磁盘移动臂的初 始方向有两个,而该算法是与移动臂方向有关,所以分成两种情况来讨论。这里是:移动臂先 由里向外移动,再由外向里移动。开

9、始时,在100号柱面执行操作的读写磁头的移动臂方向 是由里向外,趋向32号柱面的位置,因此,当访问100号柱面的操作结束后,沿臂移动方向 最近的柱面是150号柱面。所以应先为150号柱面的访问者服务,然后是为160号柱面的访问 者服务。之后,由于在向外移方向已无访问等待者,故改变移动臂的方向,由外向里依次为各 访问者服务。在这种情况下为等待访问者服务的次序是184,90,58,55,39,38,18。算法流程:输入磁头初始磁道号,序列长度,磁道号序列。选择磁盘调度算法(最短 寻道时间优先调度(SSTF)或(扫描调度算法(SCAN)中的任意一个,若选择SCAN,则需要 选择磁头移动方向是“向磁道

10、号增加方向访问”或“向磁道号减少方向访问”,之后,输出各 进程被调度的顺序,并计算总的寻道长度和平均寻道长度,选择关闭则结束磁盘调度。(2)SCAN算法流程图开始-9输入磁道号串d=1d=03k-H+? m 仁亡u sA、+/*扫描调度算法 */ void SCAN(int cidao,int n)(int temp;int i,j;int now;int sum;for(i=0;in;i+)for(j=i+1;jcidaoj)(temp=cidaoi;cidaoi=cidaoj;cidaoj=temp;coutn按非递减顺序排列好的磁道:n”;for(i=0;in;i+)coutcidaoi

11、;coutendl;coutnow;if(cidaon-1=0;i-)coutcidaoi=now)for(i=0;in;i+)coutcidaoi ;sum=cidaon-1-now;elseint pointer;int location=1;int left,right;while(cidaolocationnow)location+;left=location-1;right=location;coutpointer;cout=0;j-)coutcidaoj;for(j=right;jn;j+) coutcidaoj;sum=now+cidaon-1-2*cidao0; coutend

12、l;if(pointer=1)for(j=right;jn;j+) coutcidaoj=0;j-)coutcidaoj;sum=2*cidaon-1-now-cidao0; coutendl;elsecoutn输入不合法!请输入0或1:n”;goto loop;coutnn需要移动的总磁道数为:sumendl;cout请按任意键返回系统菜单endl;getch();showMenu(cidao,n);C:U sersAd mi n i strato r.QH -2014060 5 VH PSdocu m e ntsvi s u a I studio 2 010ProjectssiS.按非递减

13、顺序排列好的磁道二17 89 1314 16 18 1923 24 27 2930 36 38414244 47 505253 54 5657 63 70717475 81 828586 9698101105106108109111112114116119125127130 132133146148149152153156163166168170172174176179184187191194 195197198200202204206212215219220224225229232236243250251254 257260263282283286288292295297299请输入当前的磁道号二100,青输入当前磁头想要移动的方向“磁道号增加方向,0磁道号减小方向:1 磁盘调度顺序为:1011051061081091111121141161191251271301321331461481491521531561631661681701721741

温馨提示

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

评论

0/150

提交评论