操作系统2:磁盘管理

正文索引 [隐藏]

1. 磁盘结构

image-20191214144603572

  • Cylinder:磁道,磁盘不停旋转,就是磁头在磁道上读取数据

  • Logical block:块,数据传输的最小单元,磁盘的逻辑地址可以被看为一个一维的块的编址

  • Sector:扇区,块对应的物理部分

    • 0 号扇区是最外层磁道的第一个扇区
    • 其他的扇区依次编址,越靠里的磁道扇区号越大
  • Partition:分区,磁盘的逻辑划分

    image-20191214162356569

  • Volume:Patition + File system

2. 磁盘调度

I. 磁盘访问时间


寻道时间:磁盘启动时间 + 磁头移动时间

旋转时间:磁头旋转的到指定 sector 的时间,取磁头转一圈所需时间的一半作为旋转时间

传输时间:数据读写时间,即

    \[T_{transmit} = \frac{b}{rN}\]

  • b:需要读写的数据长度(bytes)
  • r:磁头旋转速度
  • N:一条磁道的长度

II. 磁盘调度算法

磁盘调度的目标就是优化寻道时间,提高磁盘访问速度

FCFS

First-Come-First-Serve,头铁,依序访问

image-20191214153207023

SSTF

Shortest-Seek-Time-First,偷懒,找最近的访问

image-20191214153311857

SCAN

双向来回扫描

image-20191214153351816

C-SCAN

单向来回扫描,从左至右,从未失手~

LOOK

SCAN 升级版,不会扫描到磁盘尽头,只要扫到 queue 端点就回扫

image-20191214153739318

C-LOOK

SCAN-LOOK 升级版,单项扫描,不扫到尽头

image-20191214153640805

3. 磁盘管理

I. 磁盘格式化

物理格式化:划分磁盘 sector 是磁盘控制器能够读写磁盘

逻辑格式化:给磁盘搞个文件系统

II. Boot

image-20191214153925988

MBR:Master Boot Record,主引导扇区,计算机开机后访问硬盘的第一个扇区

Boot code:引导代码,用于检查分区表是否正确并且在硬件自检后将控制权交给引导程序

Partition table:内含 partition 的信息

III. 坏块修复

比较一般硬盘,比如 IDE 硬盘:

  • 手动管理
  • 逻辑格式化:设置一个标志位,如果置零即为扇区损坏,不可访问

比较高级的硬盘,比如 SCSI 硬盘

  • 冗余扇区 + 扇区表
  • 一旦出现扇区损害,就从冗余扇区取出一个扇区替换坏区,物理地址修改,这样从逻辑上看,替换前后没有任何差别

IV. RAID 技术

将多块独立的磁盘结合在一起的技术

RAID 0:把所有的硬盘并联起来成为一个大的硬盘组。其容量为所有属于这个组的硬盘的总和。所有数据的存取均以并行分割方式进行,存取的速度非常快。没有冗余

image-20191214155131950

RAID 1:一般磁盘作为数据备份,可靠性最好,磁盘利用率50%

image-20191214155240472

RAID 2:每个字节数据增加一个奇偶校验位,以提高可靠性,现已被淘汰

image-20191214155409943

RAID 3:位交织奇偶结构,增加一个额外的奇偶校验磁盘(parity disk),按位或字节交叉存取

image-20191214155424978

RAID 4:块交织奇偶结构,与 RAID 3 的区别是按块存取

image-20191214155500170

RAID 5:块交织分布式奇偶结构,奇偶校验数据存放在阵列中的各个盘上

image-20191214155513025

RAID 6:较 RAID 5 增加了第二个独立的奇偶校验信息块

image-20191214155523303