为了减少对文件的访问时间,应采用一种最佳的磁盘调度算法,以使各进程对磁盘的平均访问时间最少。由于在访问磁盘时主要是寻道时间。因此,磁盘调度的目标是使磁盘的平均寻道时间最少。
一.先来先服务(FCFS)
1.方法
根据进程请求访问磁盘的先后顺序进行调度
2.优点
公平、简单、每个进程请求都能依次得到处理,不会出现某一进程的请求长期得不到满足。
3.缺点
平均寻道时间有点长,适用于磁盘I/O进程数目较少的场合
4.举例
从100号磁道访问 | |
被访问的下一个磁道号 | 移动距离(磁道数) |
55 | 45 |
58 | 3 |
39 | 19 |
18 | 21 |
90 | 72 |
160 | 70 |
150 | 10 |
38 | 112 |
184 | 146 |
平均寻道长度:55.3 |
二.最短寻道时间优先(SSTF)
1.方法
其要求访问的磁道与当前磁头所在的磁道距离最近
2.缺点
优先级低的进程会发生“饥饿”现象。因为新进程请求到达,且其所要访问的磁道与磁头当前所在的磁道距离较近,必先优先满足。
3.举例
从100号磁道访问 | |
被访问的下一个磁道号 | 移动距离(磁道数) |
90 | 10 |
58 | 32 |
55 | 3 |
39 | 16 |
38 | 1 |
18 | 20 |
150 | 132 |
160 | 10 |
184 | 24 |
平均寻道长度:27.5 |
三.扫描算法(电梯调度算法)(SCAN)
1.方法
1.首先自里向外访问,下一个对象是其欲访问的磁道既在当前磁道之外,又是距离最近的;
2.直至无更外的磁道需要访问时,才将磁臂换向为自外向里移动;
3.下一个访问的磁道在当前位置内为距离最近者;直至再无更里面的磁道要访问。
2.优点
不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑了磁头当前的移动方向;避免了出现“饥饿”现象。被广泛用于大、中、小型机器和网络中的磁盘调度。
3.缺点
当磁道刚从里向外移动而越过了某一磁道时,刚好一进程请求访问此磁道,这时此进程会等待,待磁头继续从里向外,然后从外向里扫描完处于外面的所有要访问的磁道后,才处理此进程,致使该进程的请求被大大推迟。
4.举例
从100#号磁道开始,向磁道号增加方向访问 | |
被访问的下一个磁道号 | 移动距离(磁道数) |
150 | 50 |
160 | 10 |
184 | 24 |
90 | 94 |
58 | 32 |
55 | 3 |
39 | 16 |
38 | 1 |
18 | 20 |
平均寻道长度:27.8 |
四.循环扫描算法(CSCAN)
1.方法
1.首先自里向外访问,当磁头移到最外的磁道并访问后,磁头返回到最里的欲访问磁道,即将最小磁道号紧接着最大磁道号构成循环,继续循环扫描
2.直至无更外的磁道需要访问时,才将磁臂换向为自外向里移动;
3.下一个访问的磁道在当前位置内为距离最近者;直至再无更里面的磁道要访问。
2.优点
弥补扫描算法的不足
3.举例
从100#号磁道开始,向磁道号增加方向访问 | |
被访问的下一个磁道号 | 移动距离(磁道数) |
150 | 50 |
160 | 10 |
184 | 24 |
18 | 166 |
38 | 20 |
39 | 1 |
55 | 16 |
58 | 3 |
90 | 32 |
平均寻道长度:35.8 |