磁盘

一个磁盘有若干个盘面,一个盘面有上千个磁道,一个磁道又划分为几百个扇区,每个扇区固定存储大小,一个扇区为一个盘块。相邻磁道及相邻扇区之间通过一定的间隙分隔开,以避免精度错误。

扇区是磁盘可寻址的最小单位,磁盘上能存储的物理块数目由扇区数、磁道数及磁盘面数决定,磁盘地址用 “柱面号 · 盘面号 · 扇区号” 表示。

对磁盘的同一盘面,可采用交替编号的方法减少延迟,对相邻盘面,可采用错位命名的方法。

磁盘的管理

磁盘初始化

在磁盘可以存储数据之前,必须将它分成扇区,确定扇区校验码所占位数,以便磁盘控制器能够进行读/写操作,这个过程称为低级初始化(物理格式化)

分区

第一步:将磁盘分区,每个分区由一个或多个柱面组成,每个分区的起始扇区和大小都记录在磁盘主引导记录 MBR 的分区表中。

第二步:对物理分区进行逻辑格式化(高级格式化),将初始文件系统数据结构存储到磁盘上,这些数据结构包括空闲空间和已分配空间,以及一个初始为空的目录,建立根目录、对保存空闲磁盘块信息的数据结构进行初始化。

坏块

对于简单磁盘,如采用 IDE 控制器的磁盘,坏块可手动处理,如 MS-DOS 的 Format 命令执行逻辑格式化时会扫描磁盘以检查坏块。坏块在 FAT 表上会标明,因此程序不会使用它们。

对于复杂的磁盘,控制器维护磁盘内的坏块列表,这个列表在出厂低级格式化时就已初始化,并在磁盘的使用过程中不断更新。低级格式化将一些块保留作为备用,操作系统看不到这些块,控制器可以采用备用块来逻辑地替代坏块,这种方案称为扇区备用

磁盘存取时间

磁盘调度的主要目标是减少磁盘的平均寻道时间

  1. ,平均是旋转半圈的时间

磁盘调度算法

先来先服务FCFS 算法

优点:具有公平性

最短寻道时间优先 SSTF 算法

优点:性能比 FCFS 更好

缺点:会产生“饥饿”现象

扫描 SCAN 算法(默认是 LOOK)

又称电梯调度算法。按照移动方向持续扫描,只有磁头移动到最外侧磁道时才能向内移动,移动到最内侧磁道时才能向外移动

将 SCAN 算法进行改进,不需要严格从盘面的一端到另一端,磁头只需要移动到最远的请求位置即可返回,改进后的 SCAN 算法叫 LOOK 调度

循环扫描 C-SCAN 算法 (默认是 C-LOOK)

在 SCAN 的基础上规定磁头单向移动。磁头到达盘面的一端时,回到另一端的起点再重新扫描。

将 C-SCAN 算法进行改进,不需要严格从盘面的一端到另一端,磁头只需要移动到最远的请求位置即可返回,改进后的 C-SCAN 算法叫 C-LOOK 调度

提高 I/O 速度的方法

  1. 采用 磁盘高速缓存
  2. 使用磁盘调度算法
  3. 提前读和延迟写
  4. 优化物理块的分布
  5. 虚拟盘
  6. 采用磁盘阵列 RAID

固态硬盘

特点

  1. 数据以页为单位读/写
  2. 某个块进行了若干重复写后,会磨损坏
  3. 随机写很慢

优点

  1. 由半导体存储器构成,没有移动的部件,因此随机访问比磁盘快得多
  2. 没有机械噪声和震动
  3. 能耗更低
  4. 抗震性好
  5. 安全性高

磨损均衡

  1. 动态磨损均衡。写入数据时,自动选择较新的闪存块
  2. 静态磨损均衡。这种技术更先进,就算没有数据写入,SSD 也会监测并自动进行数据分配,让老的闪存块承担无需写数据的任务,同时让较新的闪存块让出空间,平常的读/写操作在较新的闪存块中进行。