扫描(SCAN)算法——电梯调度算法
当磁头正在由里向外移动时,SCAN算法所考虑的下一个访问对象应该是其欲访问的磁道既在当前磁道之外,又是距离最近的。直到再无更外的磁道需要访问时,才将磁臂更换为自外向里运动。
循环扫描算法(CSCAN)
扫描算法存在这样的问题:当磁头刚从里向外移动而越过了某条磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,等待磁头从里向外,然后再从外向里扫描完处于外面的所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被推迟。
为了减少这种延迟,CSCAN算法规定磁头单向移动,例如,只是自里向外地移动,当磁头移动到最外层的磁道并访问后,磁头立即返回到最里的欲访问的磁道,即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。
NStepSCAN算法
在最短寻道时间优先(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN)中,都可能出现磁臂停留在某处不动的情况,例如,有一个或几个进程对某一磁道有较高的访问频率,这些进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备——这一现象,称为磁臂粘着,在高密度磁盘上,容易出现这种情况。
N步SCAN算法是将磁盘请求队列分为若干个长度为N的子队列,磁盘调度将按FSFC算法依次处理这些队列,而每处理一个队列又按照SCAN算法,对一个队列处理完,再处理其他队列。
当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其它队列,这样就可避免出现磁臂黏着现象。当N值取很大时,会使N步扫描算法蜕化为SCAN算法,当N=1时,会使N步扫描算法退化成FCFS算法