磁盘调度
磁盘调度算法
多道程序系统中,各进程可能会不断提出不同对磁盘进行读写操作的请求。由于有时这些进程发送请求的速度比磁盘响应还要快,因此有必要为每个磁盘设备建立一个等待队列。磁盘调度算法的目的是为了提高磁盘的访问性能,一般通过优化磁盘的访问请求顺序实现。
假设有下面一个请求序列,每个数字代表磁道的位置:98, 183, 37, 122, 14, 124, 65, 67。初始磁头当前的位置是在第53磁道。
先来先服务(FCFS, First Come First Served)
FCFS算法比较简单粗暴,但是如果大量进程竞争使用磁盘,请求访问的磁道可能会很分散,那FCFS算法因为寻道时间过长,在性能上就会显得很差。
最短寻道时间优先(SSTF, Shortest Seek Time First)
SSTF算法优先选择从当前磁头位置所需寻道时间最短的请求。
但SSTF算法可能存在某些请求的饥饿,对用户的服务请求的响应机会不是均等的。磁头在一小块区域来回移动,因而导致响应时间的变化幅度很大,有些请求的响应时间将不可预期。
扫描算法(SCAN)
为了防止SSTF算法产生饥饿的问题,可以规定磁头在一个方向上移动,访问所有未完成的请求,直到磁头到达该方向上的最后的磁道,才调换方向。这种算法也叫做电梯调度算法,比如电梯保持按一个方向移动,再改变方向;SCAN在磁盘边界处改变方向。
SCAN算法性能较好,在请求能够被持续处理的条件下可以避免请求长期饥饿,但是存在这样的问题:中间部分的磁道会比较占便宜,中间部分相比其它部分响应的频率会比较多,也就是说每个磁道的响应频率存在差异。
循环扫描算法(CSCAN, Circular Scan)
CSCAN算法规定只有磁头朝某个特定方向移动时,才处理磁道访问请求,而返回时直接移动至最靠边缘的磁道,也就是复位磁头,这个过程仍然需要磁头移动时间,并且返回中途不处理任何请求。
CSCAN算法的特点就是磁道只响应一个方向上的请求,相比于SCAN算法,对于各个位置磁道响应频率相对比较平均。
移动磁盘磁头
解锁完整互动实验、进阶解析与精选参考答案。
知识测验
知识测验
计算磁头移动距离
使用本节请求序列和初始磁头位置,写出FCFS、SSTF的服务顺序并累计移动距离。SCAN先向0移动,完成至两端边界的扫描;CSCAN先向199移动,并计入返回0的距离。与Lab核对。