# 基本概念
# 磁盘结构
扇区(
sector
):盘片被分成许多扇形的区域磁道(
track
):盘片上以盘片中心为圆心,不同半径的同心圆。柱面(
cylinder
):硬盘中,不同盘片相同半径的磁道所组成的圆柱。磁头(
head
):每个磁盘有两个面,每个面都有一个磁头。
# 磁盘组织
定位一个扇区需要 柱面号 + 磁头 + 扇区号
现代磁盘驱动器可以看做一个一维的逻辑块的数组,逻辑块是最小的传输单位。一维逻辑块数组按顺序映射到磁盘的扇区。
- 扇区 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)
根据进程请求访问磁盘的先后顺序进行调度
# 最短寻道时间优先算法(SSTF)
会优先处理的磁道是与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是并不能保证总的寻道时间最短。(其实就是贪心算法的思想,局部最优未必全局最优)
# 扫描算法(SCAN,LOOK)
这个熟啊(电梯调度,OO 阴魂未散
当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求(这是 LOOK 算法,SCAN 算法则必须到达边界后才改变方向),如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。
优点:
克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向
缺点:
由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道
# 循环扫描算法(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 请求需要排队
# 镜像
数据完全拷贝一份
- 优点:可靠性
- 缺点:存储开销
# 校验
数据通过某种运算(异或)得出,用以检验该组数字的正确性
- 优点:可靠性,快速恢复
- 缺点:开销
# 提高 I/O 访问速度
(这个好像也没啥可学的)
- 选择性能好的磁盘
- 并行化
- 采用适当的调度算法
- 设置磁盘高速缓冲区
# 磁盘管理实例
(应该也是不考吧,过过过)