一、定义与本质

  磁盘是计算机系统中最重要的辅助存储器(外存),具有存储容量大、成本低、可脱机永久保存信息的特点,但存取速度相对内存较慢。磁盘管理是操作系统的核心功能之一,主要包括磁盘结构认知、存取时间计算、磁盘调度算法和空闲空间管理四个核心板块。

二、磁盘物理结构

1. 基本组成

磁盘由多个盘面堆叠而成,每个盘面划分为若干同心圆环磁道,磁道沿半径方向从外向内编号(0号磁道在最外侧)。每个磁道又被划分为若干弧段扇区,扇区是磁盘读写的最小单位,通常为512字节或4KB。同一半径位置上所有盘面的磁道构成一个柱面

术语 说明
盘面 磁盘的一个记录面,每个盘面对应一个磁头
磁道 盘面上的同心圆环,信息记录在磁道上
扇区 磁道上划分的弧段,数据读写的最小单位
柱面 相同半径上所有磁道的集合,同一柱面的数据无需移动磁头即可读写

2. 格式化容量

磁盘容量有非格式化容量格式化容量之分。非格式化容量是磁记录表面可利用的磁化单元总数;格式化容量是按特定记录格式存储信息的总量,即用户真正可用的容量。格式化容量一般为非格式化容量的60%~70%,因为格式化操作需要写入扇区标识、校验码等额外信息。

磁盘的物理结构可类比老式唱片机,唱片表面有若干圈音轨(磁道),每圈音轨被划分为若干音段(扇区),唱针(磁头)在音轨上移动来读取音乐(数据)。

三、磁盘存取时间

1. 时间构成

一次磁盘读写操作所需的时间由三部分组成:

时间类型 含义 可否优化
寻道时间 磁头臂移动到目标磁道所需的时间 可通过调度算法优化
旋转延迟时间 磁头定位后,目标扇区旋转到磁头下方的时间 与转速有关,不可通过算法优化
传输时间 实际读写数据的时间 与数据量和转速有关

存取时间公式:

存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间

2. 平均存取时间

  • 平均寻道时间:磁头从任意位置移动到任意磁道的平均时间,通常为最大寻道时间的一半,典型值为10~20ms。
  • 平均旋转延迟:磁盘旋转一周所需时间的一半。若转速为r转/秒,则平均旋转延迟 = 1/(2r) 秒。例如转速为6000转/分(100转/秒),平均旋转延迟 = 1/(2×100) = 5ms。

寻道时间在存取时间中占比最大,因此磁盘调度算法的核心目标是减少平均寻道时间

3. 示例

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

解析:

  • 每块平均寻道时间 = 10 × 10 = 100ms
  • 每块总时间 = 寻道时间 + 旋转延迟 + 传输时间 = 100 + 100 + 2 = 202ms
  • 100块总时间 = 202 × 100 = 20200ms

四、磁盘调度算法

磁盘调度算法通过优化请求的响应顺序来减少磁头移动距离,从而降低平均寻道时间。

1. 先来先服务(FCFS)

按请求到达的先后次序进行调度。

优点 缺点
公平、简单,每个请求都能得到处理 平均寻道距离较大,性能较差

适用场景:磁盘I/O请求较少的场合。

2. 最短寻道时间优先(SSTF)

优先选择距离当前磁头位置最近的请求。

优点 缺点
平均寻道时间较短,吞吐量较好 可能产生饥饿现象,边缘磁道的请求长期得不到服务

饥饿现象:磁头长期在某一区域来回服务,导致较远磁道的请求无限期延迟。

3. 扫描算法(SCAN/电梯算法)

磁头在某一方向上移动并服务所有请求,直到到达该方向的最远端,然后调转方向反向移动服务。

优点 缺点
消除了饥饿现象 边缘磁道的响应频率低于中间磁道

因磁头移动规律类似电梯而得名,电梯从底层上升到顶层,沿途响应所有楼层请求,到达顶层后调头下行。

4. 循环扫描算法(C-SCAN)

磁头单向移动服务请求,到达最远端后快速复位到起始端(复位途中不服务),构成循环扫描。

优点 缺点
各磁道响应频率更均匀 复位时间增加了额外开销

5. LOOK与C-LOOK算法

SCAN和C-SCAN的改进版本:磁头不需要移动到磁盘的物理最远端,而是移动到当前方向上最远的请求位置后立即折返。

  • LOOK:双向移动,途中服务请求(类似SCAN但折返点提前)
  • C-LOOK:单向移动,复位途中不服务(类似C-SCAN但折返点提前)

6. 算法对比总结

算法 寻道优化 饥饿问题 响应均匀性 特点
FCFS 公平但效率低
SSTF 局部最优,可能饥饿
SCAN 一般 双向扫描,边缘响应慢
C-SCAN 单向扫描,响应均匀
LOOK/C-LOOK 提前折返,减少无效移动

五、磁盘空闲空间管理

文件系统需要记录磁盘中哪些块是空闲的,以便分配新文件时使用。常见的管理方式有以下几种:

1. 空闲块链表

将所有空闲块用指针串联成链表。分配时从链头取块,回收时插入链尾。实现简单但效率较低,适用于小型文件系统。

2. 位示图

用二进制位表示每个磁盘块的状态:0表示空闲,1表示已分配(或相反)。位示图通常以“字”为单位组织,每个字包含若干位。

位示图的优点

  • 空间效率高(1位表示1块)
  • 便于快速查找连续空闲块
  • 位运算速度快

3. 成组链接法

UNIX系统采用的方法,结合了链表和索引的优点:将空闲块分组,每组第一块记录下一组空闲块的块号和块数。

4. 位示图计算

例: 某文件系统采用位示图管理磁盘空闲空间,磁盘容量为300GB,物理块大小为1MB,字长为32位。问:位示图需要多少个字?

解析:
① 计算磁盘块数:300GB / 1MB = 300 × 1024 = 307200 块
② 每个字(32位)可表示32个块的状态
③ 所需字数 = 307200 / 32 = 9600 字

公式归纳
块数 = 磁盘容量 / 块大小
字数 = ⌈块数 / 字长⌉ (向上取整)

例: 基于上题,求第2054个磁盘块在位示图中的位置(字号和位号均从0开始编号)。

解析:
① 字号 = ⌊2054 / 32⌋ = 64 (第65个字,编号为64)
② 位号 = 2054 mod 32 = 6 (第7位,编号为6)

注意:字号和位号的起始编号方式需根据说明确定,如果系统从1开始编号,则需要调整。

六、练习

题目1:在磁盘调度管理中,通常( )。

A. 先进行旋转调度,再进行移臂调度
B. 先进行移臂调度,再进行旋转调度
C. 仅进行移臂调度
D. 仅进行旋转调度

答案:B

解析:磁盘调度通常先进行移臂调度(寻道),再进行旋转调度(扇区定位)。寻道时间远大于旋转延迟,因此先优化移臂顺序可显著提升性能。

题目2:假设磁头当前位于53磁道,请求序列为:98, 183, 37, 122, 14, 124, 65, 67。若采用最短寻道时间优先(SSTF)算法,磁头移动的总磁道数是( )。

A. 208
B. 236
C. 299
D. 640

答案:B

解析(SSTF过程):
起始53
53 → 65(12) → 67(2) → 37(30) → 14(23) → 98(84) → 122(24) → 124(2) → 183(59)
总移动距离 = 12 + 2 + 30 + 23 + 84 + 24 + 2 + 59 = 236

题目3:题目2条件不变,若采用扫描算法(SCAN),假设磁头当前移动方向为磁道号增大方向,磁头移动的总磁道数是( )。

A. 208
B. 236
C. 299
D. 337

答案:C

解析(SCAN过程,向增大方向移动):
53 → 65(12) → 67(2) → 98(31) → 122(24) → 124(2) → 183(59)
到达183后,调转方向向减小方向移动:
183 → 37(146) → 14(23)
总移动距离 = 12+2+31+24+2+59 + 146+23 = 299

题目4:在文件系统中,用于记录磁盘上空闲空间信息的数据结构通常被称为( )。

A. 访问控制列表
B. 磁盘分配表
C. 缓存表
D. 页表

答案:B

解析:磁盘分配表(如位示图、空闲块链表)用于跟踪未使用的磁盘块。A是安全权限管理结构,C是性能优化缓存,D是内存分页管理结构。

题目5:下列关于磁盘碎片整理的说法,正确的是( )。

A. 碎片整理可以优化内存的分配效率
B. 碎片整理通过合并文件碎片和空闲区来提升文件访问效率
C. 碎片整理主要作用于CPU缓存
D. 碎片整理消除了磁盘的内部碎片

答案:B

解析:磁盘碎片整理程序通过将分散存储的文件块合并为连续区域,并整合空闲空间,从而减少磁头移动,提升文件访问效率。它作用于磁盘(外存),而非内存或CPU缓存。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐