题目:若磁头的当前位置在第100磁道,现在有一磁盘读写请求序列如下:55,58,39,18,90,160,150,38,184。分别采用先来先服务算法(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