磁盘调度算法——FCFS、SSTF、SCAN、CSCAN

题目:若磁头的当前位置在第100磁道,现在有一磁盘读写请求序列如下:555839189016015038184。分别采用先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN),分别求总寻道长度和平均寻道长度?

原理:

先来先服务算法(FCFS)根据进程请求访问磁盘的先后顺序进行调度

最短寻道时间优先算法(SSTF):其要求访问的磁道与当前磁头所在的磁道距离最近

扫描算法(SCAN):

1.首先自里向外访问,下一个对象是其欲访问的磁道既在当前磁道之外,又是距离最近的;

2.直至无更外的磁道需要访问时,才将磁臂换向为自外向里移动;

3.下一个访问的磁道在当前位置内为距离最近者;直至再无更里面的磁道要访问;

循环扫描算法(CSCAN):

1.首先自里向外访问,当磁头移到最外的磁道并访问后,磁头返回到最里的欲访问磁道,即将最小磁道号紧接着最大磁道号构成循环,继续循环扫描

2.直至无更外的磁道需要访问时,才将磁臂换向为自外向里移动;

3.下一个访问的磁道在当前位置内为距离最近者;直至再无更里面的磁道要访问。

解析:

先来先服务算法(FCFS)只考虑访问请求的先后顺序。如上题当前位置为100,则顺序为100→55→58→39→18→90→160→150→38→184。如下表所示:

                                            从100#号磁盘开始
          被访问的下一个磁盘号               移动距离(磁道数)
                       55                         45
                       58                          3
                       39                         19
                       18                         21
                       90                         72
                      160                         70
                      150                         10
                       38                        112
                      184                        146

磁头移动道数=45+3+19+21+72+70+10+112+146=498

平均寻道长度:498/9=55.3

优缺点:公平、简单、每个进程请求都能依次得到处理,不会出现某一进程的请求长期得不到满足;平均寻道时间有点长,适用于磁盘I/O进程数目较少的场合。

最短寻道时间优先算法(SSTF):从等待的访问者中挑选寻找时间最短的那个请求执行。如上题当前位置为100,则顺序为100→90→58→55→39→38→18→150→160→184。如下表所示:

                                            从100#号磁盘开始
          被访问的下一个磁盘号               移动距离(磁道数)
                       90                         10
                       58                         32
                       55                          3
                       39                         16
                       38                          1
                      18                         20
                      150                        132
                       160                         10
                      184                        146

磁头移动道数=10+32+3+16+1+20+132+10+24=248

平均寻道长度:248/9=27.5

优缺点:优先级低的进程会发生“饥饿”现象。因为新进程请求到达,且其所要访问的磁道与磁头当前所在的磁道距离较近,必先优先满足。

      扫描算法(SCAN):自里向外访问,直到再无更外的磁道需要访问时,才将磁臂换向为自外向里移动。如上题当前位置为100,则顺序为100→150→160→184→90→58→55→39→38→18。如下表所示:

磁头移动道数=50+10+24+94+32+3+16+1+20=250

平均寻道长度:250/9=27.8

优缺点:不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑了磁头当前的移动方向;避免了出现“饥饿”现象。被广泛用于大、中、小型机器和网络中的磁盘调度;当磁道刚从里向外移动而越过了某一磁道时,刚好一进程请求访问此磁道,这时此进程会等待,待磁头继续从里向外,然后从外向里扫描完处于外面的所有要访问的磁道后,才处理此进程,致使该进程的请求被大大推迟。

循环扫描算法(CSCAN): 单向扫描,自里向外扫描,当磁头移动到最外面的磁道并访问后,磁头立即返回到最里面的预访问磁道,即将最小磁道号紧接着最大磁道号构成循环。如上题当前位置为100,则顺序为100→150→160→184→18→38→39→55→58→90。如下表所示:

磁头移动道数=50+10+24+166+20+1+16+3+32=322

平均寻道长度:322/9=35.8

优缺点:弥补扫描算法的不足。


版权声明:本文为weixin_46098676原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。