# 基本概念

# 磁盘结构

  • 扇区( sector ):盘片被分成许多扇形的区域

  • 磁道( track ):盘片上以盘片中心为圆心,不同半径的同心圆。

  • 柱面( cylinder ):硬盘中,不同盘片相同半径的磁道所组成的圆柱。

  • 磁头( head ):每个磁盘有两个面,每个面都有一个磁头。

image-20250522164845498

# 磁盘组织

定位一个扇区需要 柱面号 + 磁头 + 扇区号

现代磁盘驱动器可以看做一个一维的逻辑块的数组,逻辑块是最小的传输单位。一维逻辑块数组按顺序映射到磁盘的扇区。

  • 扇区 0 是最外面柱面的第一个磁道第一个扇区。
  • 该映射是先按磁道内扇区顺序再按柱面内磁道顺序再按从外到内的柱面顺序来排序的。
  • 绝大多数磁盘都有一些缺陷扇区,因此映射必须用磁盘上的其他空闲扇区来替代这些缺陷扇区。
  • 对于磁盘,每个磁道的扇区数并不是常量。

# 磁盘访问时间

# 寻道时间

把磁头从当前位置移动到指定磁道上所经历的时间

该时间是启动磁盘的时间 s 与磁头移动 n 条磁道所花费的时间之和。设移动一条磁道花费时间为 m

Ts = m * n + s

# 旋转延迟时间

通过旋转磁盘,使磁头定位到目标扇区所需要的时间

设转速为 r ,则平均旋转延迟时间(半圈)

Tr = 1/(2r)

# 传输时间

把数据从磁盘读出,或向磁盘写入数据所经历的时间

Tt 的大小与每次所读/写的字节数 b ,转速 r 以及磁道可存的字节数 N 有关

每个磁道要可存 N 字节的数据,因此 b 字节的数据需要 b/N 个磁道才能存储。而读 / 写一个磁道所需的时间刚好又是转一圈所需要的时间 1/r

Tt = b/(rN)

# 总访问时间

总访问时间 = 寻道时间 + 旋转延迟时间 + 传输时间

Ta = Ts + 1/(2/r) + b/(rN)

# 磁盘调度算法

# 先来先服务算法(FCFS)

根据进程请求访问磁盘的先后顺序进行调度

image-20250524134933932

# 最短寻道时间优先算法(SSTF)

会优先处理的磁道是与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是并不能保证总的寻道时间最短。(其实就是贪心算法的思想,局部最优未必全局最优)

image-20250524135126815

# 扫描算法(SCAN,LOOK)

这个熟啊(电梯调度,OO 阴魂未散

当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求(这是 LOOK 算法,SCAN 算法则必须到达边界后才改变方向),如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。

image-20250524135716910

  • 优点:

    克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向

  • 缺点:

    由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道

# 循环扫描算法(C-SCAN, C-LOOK)

  • 按照所要访问的柱面位置的次序去选择访问者。
  • 移动臂到达最后一个柱面后,立即带动读写磁头快速返回到 0 号柱面。
  • 返回时不为任何的等待访问者服务。返回后可再次进行扫描。

由于 SCAN 算法偏向于处理那些接近最里或最外的磁道的访问请求,所以使用改进型的 C-SCAN 算法可避免这个问题。消除了对两端磁道 请求的不公

# 其他改进算法

“磁臂粘着” 现象:有一个或几个进程对某一磁道有较高的访问频率, 即这个 (些) 进程反复请求对某一磁道的 I/O 操作,从而垄断了整个磁盘设备。

# N-Step-SCAN

  • 将请求队列分成分成长度为 N 的子队列,队列之间采用 FCFS ,队列内部采用 SCAN
  • N 很大~ SCAN
  • N=1~ FCFS

# FSCAN:Fixed Period SCAN

  • 请求队列分为两个子队列(当前请求和新请求)

# 廉价冗余磁盘阵(RAID)

(这个似乎不考?但是 ppt 里内容挺多的,我还是简单看了一下)

# 概念

一种把多块独立的硬盘(物理硬盘)按照不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。

组成磁盘阵列的不同方式称为 RAID 级别 ( RAID Levels )。

数据冗余的功能是在用户数据一旦发生损坏后,利用冗余信息可以使损失数据得以恢复,从而保障了用户数据的安全性。

# 优点

  • 成本低,功耗小,传输速率高

    • RAID 比起传统的大直径磁盘驱动器来,在同样的容量下,价格要低许多。
    • RAID 让很多磁盘驱动器并行传输数据,比单个磁盘驱动器提高几倍、几十倍甚至上百倍的速率。有效缓解了快速的 CPU 与慢速的磁盘之间的矛盾
  • 可提供容错功能

    • 普通磁盘驱动器只能通过 CRC (循环冗余校验) 码提供简单的容错, RAID 建立在每个磁盘驱动器的硬件容错功能之上,可提供更高的安全性。

# 方式

# 条带化

一个字节块可能存放在多个数据盘上

  • 优点:并行存取,性能好,磁盘负载均衡
  • 缺点:可靠性、不同 IO 请求需要排队

# 镜像

数据完全拷贝一份

  • 优点:可靠性
  • 缺点:存储开销

# 校验

数据通过某种运算(异或)得出,用以检验该组数字的正确性

  • 优点:可靠性,快速恢复
  • 缺点:开销

image-20250524142154061

# 提高 I/O 访问速度

(这个好像也没啥可学的)

  • 选择性能好的磁盘
  • 并行化
  • 采用适当的调度算法
  • 设置磁盘高速缓冲区

# 磁盘管理实例

(应该也是不考吧,过过过)

image-20250524143027317

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

CircleCoder 微信支付

微信支付

CircleCoder 支付宝

支付宝

CircleCoder 贝宝

贝宝