磁盘
一个磁盘有若干个盘面,一个盘面有上千个磁道,一个磁道又划分为几百个扇区,每个扇区固定存储大小,一个扇区为一个盘块。相邻磁道及相邻扇区之间通过一定的间隙分隔开,以避免精度错误。
扇区是磁盘可寻址的最小单位,磁盘上能存储的物理块数目由扇区数、磁道数及磁盘面数决定,磁盘地址用 “柱面号 · 盘面号 · 扇区号” 表示。
对磁盘的同一盘面,可采用交替编号的方法减少延迟,对相邻盘面,可采用错位命名的方法。
磁盘的管理
磁盘初始化
在磁盘可以存储数据之前,必须将它分成扇区,确定扇区校验码所占位数,以便磁盘控制器能够进行读/写操作,这个过程称为低级初始化(物理格式化)。
分区
第一步:将磁盘分区,每个分区由一个或多个柱面组成,每个分区的起始扇区和大小都记录在磁盘主引导记录 MBR 的分区表中。
第二步:对物理分区进行逻辑格式化(高级格式化),将初始文件系统数据结构存储到磁盘上,这些数据结构包括空闲空间和已分配空间,以及一个初始为空的目录,建立根目录、对保存空闲磁盘块信息的数据结构进行初始化。
坏块
对于简单磁盘,如采用 IDE 控制器的磁盘,坏块可手动处理,如 MS-DOS 的 Format 命令执行逻辑格式化时会扫描磁盘以检查坏块。坏块在 FAT 表上会标明,因此程序不会使用它们。
对于复杂的磁盘,控制器维护磁盘内的坏块列表,这个列表在出厂低级格式化时就已初始化,并在磁盘的使用过程中不断更新。低级格式化将一些块保留作为备用,操作系统看不到这些块,控制器可以采用备用块来逻辑地替代坏块,这种方案称为扇区备用。
磁盘存取时间
磁盘调度的主要目标是减少磁盘的平均寻道时间。
- ,平均是旋转半圈的时间
磁盘调度算法
先来先服务FCFS 算法
优点:具有公平性
最短寻道时间优先 SSTF 算法
优点:性能比 FCFS 更好
缺点:会产生“饥饿”现象
扫描 SCAN 算法(默认是 LOOK)
又称电梯调度算法。按照移动方向持续扫描,只有磁头移动到最外侧磁道时才能向内移动,移动到最内侧磁道时才能向外移动
将 SCAN 算法进行改进,不需要严格从盘面的一端到另一端,磁头只需要移动到最远的请求位置即可返回,改进后的 SCAN 算法叫 LOOK 调度。
循环扫描 C-SCAN 算法 (默认是 C-LOOK)
在 SCAN 的基础上规定磁头单向移动。磁头到达盘面的一端时,回到另一端的起点再重新扫描。
将 C-SCAN 算法进行改进,不需要严格从盘面的一端到另一端,磁头只需要移动到最远的请求位置即可返回,改进后的 C-SCAN 算法叫 C-LOOK 调度。
提高 I/O 速度的方法
固态硬盘
特点
- 数据以页为单位读/写
- 某个块进行了若干重复写后,会磨损坏
- 随机写很慢
优点
- 由半导体存储器构成,没有移动的部件,因此随机访问比磁盘快得多
- 没有机械噪声和震动
- 能耗更低
- 抗震性好
- 安全性高
磨损均衡
- 动态磨损均衡。写入数据时,自动选择较新的闪存块
- 静态磨损均衡。这种技术更先进,就算没有数据写入,SSD 也会监测并自动进行数据分配,让老的闪存块承担无需写数据的任务,同时让较新的闪存块让出空间,平常的读/写操作在较新的闪存块中进行。