操作系统之移臂调度算法

本章分享操作系统之移臂调度算法,移臂调度算法是驱动调度技术中的算法,目的是减少为若干I/O请求服务所需消耗的总时间,从而提高系统效率。常见的移臂调度算法有先来先服务算法(FCFS)、最短查找时间优先算法、扫描算法、电梯调度算法和循环扫描算法。本章将逐步讲解各个算法的实现方法。

本章同样适用于普通本科院校的学生期末复习和计算机学院老师板书参考。

我们用一道例题来具体讲解下面的各种算法。
假设磁盘机共有200个柱面,编号0至199,考虑依次到达下列柱面访问请求序列:150,30,190,20,100,55,90
同时假如磁头当前处于50号柱面位置,且正在向柱面号大的方向移动。

至此,我们可以得出一张图:
在这里插入图片描述

先来先服务算法

先来先服务算法中,磁盘臂是随机移动的,不考虑各I/O请求之间的相对次序和移动臂当前所处位置,特点是进程等待I/O请求的时间会很长,寻道性能较差。
简单来说,就按题目中所给的柱面依次进行到达,题目中是150,30,190,20,100,55,90,那就先去150,再绕回去30,再绕去190…等待。如图所示:
在这里插入图片描述
故移动臂移动柱面总数=(150-50)+(150-30)+(190-30)+(190-20)+(100-20)+(100-55)+(90-55)=710

注意:移动柱面总数就是把经过都加起来,例如第一步是50到150,经历的柱面书就是100

最短查找时间优先算法

最短查找时间优先算法总是先执行查找时间最短的请求,与FCFS算法相比有较好的寻道性能。简单来说,就是先去距离近的,例如本题中,离50最近的是55,就先去55,离55最近的是30,就先去30,以此类推,如图所示:
在这里插入图片描述
故移动臂移动柱面总数=(55-50)+(55-30)+(30-20)+(90-20)+(100-90)+(150-100)+(190-150)=210

相比较FCFS,是不是少了很多柱面!?

扫描算法

扫面柱面就是“撞到南墙才回头”,往一个方向扫柱面后,就一直往那个方向扫,直到那个方向的柱面都扫完了才往反方向扫,例如本题,50往55方向扫,55的下一步就是90,90的下一步就是100…直到190的下一步199,再往回扫。
注意,按照扫描算法规则,即使没有访问请求也须扫描到头,所以到达要求的190后还要扫到199。如图所示:
在这里插入图片描述
故移动臂移动柱面总数=(55-50)+(90-55)+(100-90)+(150-100)+(190-150)+(199-190)+(199-30)+(30-20)=328

电梯调度算法

电梯调度算法是扫描算法的一种改进,每次总是选择沿移动臂的移动方向最近的那个柱面,若同一个柱面上有多个请求,还需进行旋转优化。如果当前的移动方向上没有但相反方向有访问请求时,就改变移动臂的移动方向。

本例题中,电梯调度算法的图示情况如下:
在这里插入图片描述
相对于扫描算法来说,并没有扫到199,因为到达190后没有要求的柱面,所以就往相反方向扫描,就跟电梯一样,从1楼乘往18楼,如果中间楼层的人想搭电梯下楼,是要先等电梯到达18楼后再往下走。

移动臂移动柱面总数=(55-50)+(90-55)+(100-90)+(150-100)+(190-150)+(190-30)+(30-20)=310

循环扫描算法

循环扫描算法就更简单了,往一个方向扫描后,扫完了,直接重新从反方向的开始方向扫剩下的,不多说,直接上图!:
在这里插入图片描述
移动臂移动柱面总数=(55-50)+(90-55)+(100-90)+(150-100)+(190-150)+(150-100)+(190-150)+(199-190)+(199-0)+(20-0)+(30-20)=378

本例题来自书
操作系统教程(第5版)费翔林 骆斌 编著
p270-274

其余操作系统的算法可在博主空间找到!

感谢大家浏览,谢谢!

Guess you like

Origin blog.csdn.net/weixin_44001222/article/details/113621409