软考-软件设计师:操作系统-存储管理-磁盘调度算法、移臂调度算法(考点多)

磁盘调度算法

磁盘调度分以下两类:

  1. 移臂调度,先进行移臂调度,找磁道。有算法优化
  2. 旋转调度,然后再进行旋转调度,找扇区。没有算法优化

由于访问磁盘 最耗 寻道时间,因此磁盘调度 目标 是:使磁盘平均寻道时间最少

移臂调度算法

  • 先来先服务(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,通过上面分析可知:

  1. 用时 3ms 读取 R0 数据后,磁头指向下一个块 R6

  2. 用时 3ms 处理缓冲区数据,同时,磁盘也会同时旋转,由于磁盘旋转到下一个块的时间是 3ms,所以处理 1个块的数据 后,磁头正好移动指向下一个块 R1

  3. 然后可以直接继续读取 R1,与上面 步骤1、步骤2相同,不需要等待时间

所以总耗时:(3ms + 3ms) * 11 = 66

第二问答案

B

参考:
https://blog.csdn.net/qq_71654538/article/details/133624855


原文出处:/show_1GWtEi1eHUo.html