Skip to content

5、磁盘管理

绿色的是磁道,等分为扇区,有多个盘面,最外圈是 0 号磁道

每个盘面有一个磁头,所有磁头连接主杆,所有磁头一起移动,固定方向持续移动

时间

读取磁盘数据的时间包括:

  • 找磁道时间(寻道时间)
  • 找块(扇区)时间,即旋转延迟时间(等待时间)
  • 传输时间(看题目有没有定义)

存取时间 = 寻道时间(磁头移动到磁道所需时间) + 等待时间(等待读写的扇区转到磁头下方所用的时间)

磁盘平均存取时间例题

某磁盘磁头从一个磁道移至另一个磁道需要 10ms。文件在磁盘上非连续存放逻辑上相邻数据块的平均移动距离为 10 个磁道,每块的旋转延迟时间及传输时间分别为 100ms 和 2ms,则读取一个 100 块的文件需要()ms 时间。

  • 寻道时间/块:10ms * 10 个磁道 = 100ms
  • 旋转延迟时间/块:100ms
  • 传输时间/块:2ms

得出读取一块的平均时间是: 寻道时间/块 + 旋转延迟时间/块 + 传输时间/块 = 100ms + 100ms + 2ms = 202ms

所以读取 100 块的平均时间是: 202ms * 100 = 20200ms

磁盘优化分布存取时间例题

假设某磁盘的每个磁道划分成 11 个物理块,每块存放 1 个逻辑记录。逻辑记录 R。,R1,···,Rg,R1o 存放在同一个磁道上,记录的存放顺序如下表所示:

物理块1234567891011
逻辑记录R0R1R2R3R4R5R6R7R8R9R10

如果磁盘的旋转周期为 33ms,磁头当前处在 R。的开始处。若系统使用单缓冲区顺序处理这些记录,每个记录处理时间为 3ms,则处理这 11 个记录的最长时间为();若对信息存储进行优化分布后,处理 11 个记录的最少时间为()。

第一问

  • 转一圈 33ms,有 11 个物理块,读取一个信息的记录是 3ms
  • 单缓冲区说明缓冲区只能有一个数据
  • R0:没有寻道时间(顺序存放),没有旋转延迟时间(磁头在起始位置),需要 3ms 存入缓冲区时间,3ms 读取信息时间
  • R1 - R10:R0 处理完以后磁盘不会停止,3ms 以后刚好错过 R1,旋转延迟时间为 30ms 需要 3ms 存入缓冲区时间,3ms 读取信息时间
  • 一共 6 + (30 + 3 + 3)* 10 = 366ms

第二问

  • 优化分布,即自己选择存放位置
物理块1234567891011
逻辑记录R0R6R1R7R2R8R3R9R4R10R5
  • 相当于转了两圈,33ms * 2 = 66ms

xxx

某计算机系统输入/输出采用双缓冲工作方式,其工作过程如下图所示,假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间 T 为 10μs,由缓冲区送至用户区的时间 M 为 6μs,系统对每个磁盘块数据的处理时间 C 为 2μs。若用户需要将大小为 10 个磁盘块的 Doc1 文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用双缓冲需要花费的时间为(问题 1)μs,比使用单缓冲节约了(问题 2)μs 时间。

双缓冲

  • 双缓冲情况下,读入(T)和传输 + 处理(M+C)可以并行(流水线)
  • 第一个磁盘块没有并行可能 10 + 6 + 2 = 18μs
  • 第二块开始,一边读下一个块(10),一边处理上一个块(6 + 2),瓶颈为读入 T,每个块新增时间为 10
  • 18 + 9 * 10 = 108μs

单缓冲

  • 单缓冲是串行的
  • 每个块时间为 T + M + C = 10 + 6 + 2 = 18μs
  • 10 * 18 = 180μs

移臂调度算法

先寻道,再考虑扇区(从小到大)

先来先服务(FCFS)

最短寻道时间优先(SSTF)【贪心算法】

扫描算法(scan)【双向】

循环扫描算法(CSCAN)【单向】

KESHAOYE-知识星球 V20250523200726