磁盘调度算法
磁盘调度分以下两类:
- 移臂调度,先进行移臂调度,找磁道。有算法优化
- 旋转调度,然后再进行旋转调度,找扇区。没有算法优化
由于访问磁盘 最耗 寻道时间,因此磁盘调度 目标 是:使磁盘平均寻道时间最少
移臂调度算法
先来先服务(FCFS):谁先申请就先响应谁
最短寻道时间优先(SSTF):选择剩下申请中,响应距离目前磁道数最近的申请
扫描算法(SCAN):也叫电梯算法,双向 扫描的过程,扫描 从最外到最内,从最内到最外 的所有请求。往返移动
循环扫描(CSCAN)算法:单向,固定由外向内或由内向外扫描
改变移动臂方向的算法
- 先来先服务(FCFS)
- 最短寻道时间优先(SSTF)
先来先服务(FCFS)
如上图,当前在 100号磁道,发来 9个请求,由于是 先来先服务,所以:
先处理 1号请求,移动到 55号磁道
再处理 2号请求,移动到 58号磁道
以此类推。。。。
最短寻道时间优先(SSTF)
提示:上图的序号,不是请求顺序,而是 处理顺序
如上图,当前在 100号磁道,发来 9个请求,由于是 最短寻道时间优先,所以:
先处理 1号请求,移动到 90号磁道,因为距离 100号磁道 最近
再处理 2号请求,移动到 58号磁道,因为距离 90号磁道 最近
以此类推。。。。
题
假设某磁盘的每个磁道划分成 11个物理块,每块存放 1个逻辑记录。逻辑记录 R0,R1,...,R9,R10 存放在同一个磁道上,记录的存放顺序如下表所示:
如果磁盘的旋转周期为 33ms,磁头当前处在 R0 的开始处。若系统使用单缓冲区顺序处理这些记录,每个记录处理时间为3ms,则处理这 11个记录 的最长时间为( );若对信息存储进行优化分布后:处理 11个记录 的最少时间为( )
A、33ms
B、336ms
C、366ms
D、376ms
A、33ms
B、66ms
C、86ms
D、376ms
分析第一个问题
磁盘的旋转周期为
33ms,共有11个物理块,说明移动到下1个物理块需要3ms单缓冲区 顺序处理,说明 处理 时,不能读取数据,否则会 覆盖缓冲区
处理缓冲区数据的同时,磁盘也会旋转。由于处理缓冲区数据的时间是
3ms,说明处理完1个块的数据,磁头会指向下一个块
读取 R0
读取 R0 用时 3ms + 3ms = 6ms
读取 R1
由上面可知,读取 R0 后,磁头指向 R2开始处,要想读取 R1,需要等待 10ms ,磁头指向 R1 开始处
读取 R1 用时 3ms + 3ms = 6ms
最终用时:30ms + 6ms = 36ms
读取 R2
与读取 R1相同,需要等待 10ms,磁头指向 R2开始处
读取 R2 用时 3ms + 3ms = 6ms
最终用时:30ms + 6ms = 36ms
总结:读取 R1 … R10
36ms * 10 = 360ms
读取 R1 … R10 ``总共用时
6ms + 360ms = 366ms
第一问答案
C
分析第二问
优化结果如下图:
假设当前磁头指向 R0,通过上面分析可知:
用时
3ms读取R0数据后,磁头指向下一个块R6用时
3ms处理缓冲区数据,同时,磁盘也会同时旋转,由于磁盘旋转到下一个块的时间是3ms,所以处理1个块的数据后,磁头正好移动指向下一个块R1然后可以直接继续读取
R1,与上面 步骤1、步骤2相同,不需要等待时间
所以总耗时:(3ms + 3ms) * 11 = 66
第二问答案
B
参考:
https://blog.csdn.net/qq_71654538/article/details/133624855





