磁盘的工作原理

磁盘是使用最多的外部存储系统。

基本结构

基本结构为盘片+磁头。每个磁盘有多个盘片、多个磁头,对应关系是每个盘片对应两个磁头(正反两面)。

  • 扇区:盘片被划分为多个扇区,同个磁盘中的各个盘片扇区数相同。每个磁道有着相同的扇区数。
  • 磁道:盘片上以盘片中心为圆心,不同半径的同心圆。
  • 柱面:==不同盘片相同半径的磁道==所组成的圆柱。

读写的顺序是:==按照柱面从外到内进行读写,在柱面内的顺序为先读同一盘面的各个扇区,再从上到下读不同盘面==(不严谨,仅代表盘片的顺序)。

基本结构

磁盘的划分

硬盘实际扇区数比硬盘标签上标定的大:

  • 固件区:于存储硬盘的固件(硬盘控制器使用);
  • 工作区 :用户存储数据的区域,也就是硬盘标定容量的扇区
  • 保留区:超过在固件里定义的硬盘容量的扇区部分

对于磁盘,每个磁道可利用的扇区数并不是常量。绝大多数磁盘都有一些缺陷扇区。这些无法使用的扇区会破坏地址空间的连续性,因此必须用磁盘上的其他空闲扇区来替代这些缺陷扇区。

  • P表:又称为永久缺陷列表,用于记录硬盘生产过程中产生的缺陷
  • G表:又称为增长缺陷列表,用于记录硬盘使用过程中由于磁介质性能变弱而引起的缺陷

划分

磁盘的组织

  • 主引导扇区MBR
  • 分区表
  • 分区引导扇区DBR
  • 容量及访问时间

主引导区MBR

主引导记录MBR:硬盘的0柱面、0磁头、1扇区称为主引导扇区。

MBR不属于任何一个操作系统,不会夹带操作系统的性质,具有公共引导的特性。

MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的。该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。

MBR的内容:

  • 前446字节为启动代码及数据
  • 447-510字节:分区表DPT。由4个分区项组成(限制了只能有4个主分区),每项为16字节,记录了启动时所需的分区参数
  • 511-512字节:幻数AA55,若没有则被认为是没有被分区的硬盘

MBR

硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区 。

  • 一个硬盘主分区至少有1个,最多4个

    主分区只能有一个是激活的active,其余为inactive

  • 扩展分区可以没有,最多1个。主分区+扩展分区总共不能超过4个

    分区如果没有被分为主分区和逻辑分区就被浪费了,一般把主分区意外的部分全分为扩展分区

  • 扩展分区不能直接使用,需要分为若干个逻辑分区。逻辑分区可以有若干个

磁盘分区表DPT

硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节

DPT记录了分区所在的起始以及结束的磁头号、扇区号、柱面号,之前已经使用的扇区数。

DPT

磁盘的访问

使用逻辑块对磁盘的空间进行管理。

记每个磁道的扇区数为s,磁头的总数为t,柱面号为i,磁头号为j,扇区号为k。

==则可以得到块号b=k+s(j+it)b=k+s*(j+i*t)==

==理解的关键在于:磁盘的读写是从内柱面到外柱面,在柱面内为从上到下访问。==

  • 柱面号 = 块号/(磁头数*扇区数)=b/(ts)=ib/(t*s) = i
  • 磁头号 = (块号mod(磁头数*扇区数))/扇区数=(bmod(ts))/s=(sj+k)/s=j(b \mod (t*s))/s=(s*j+k)/s=j
  • 柱面号 = (块号mod(磁头数*扇区数))mod扇区数=(bmod(ts))mods=(sj+k)mods=k(b \mod (t*s)) \mod s=(s*j+k) \mod s=k

访问时间=寻道时间+旋转延迟时间+传输时间

  • 寻道时间:找到对应的磁道,认为是与移动的磁道数n相关,TS=mn+sT_S=m*n+s,m、s为常数,s为启动时间
  • 旋转延迟时间:转到对应的扇区,认为是转半圈的时间
  • 传输时间:就是传输信息的时间

磁盘的调度

当磁盘有多个读写请求时,磁头如何移动才能有最高的读写效率。

先来先服务FCFS

按访问请求到达的先后次序服务。

  • 简单、公平
  • 效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。

最短寻道时间优先算法SSTF

优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。

  • 改善了磁盘平均服务时间。
  • 可能产生“饥饿”现象,造成某些访问请求长期等待得不到服务。

扫描算法(SCAN )(电梯调度)

考虑捎带的磁头移动

当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。

  • 克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向
  • 但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

循环扫描算法(CSCAN)

按照所要访问的柱面位置的次序去选择访问者。移动臂到达最后一个柱面后,立即带动读写磁头快速返回到 0 号柱面。

==返回时不为任何的等待访问者服务。返回后可再次进行扫描。==

image-20240515150649372

磁盘的空间管理

位图、空闲表、成组链接法

位图

用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配的物理块为0,否则为1

申请物理块时,可以在位示图中查找1的位,返回对应的物理块号;归还时,将对应位转置为1

空闲表

将所有空闲块记录在一个表中,即空闲表;主要记录两项内容:起始块号,块数

image-20240515150831055

成组链接法

空闲块链表:把所有空闲块链成一个表

成组链接法:把空白物理块分成组,再通过指针把组与组之间链接起来

成组链接法的优点:

  1. 空白块号登记不占用额外空间;
  2. 节省时间;
  3. 采用后进先出的栈结构思想

成组链接法

RAID

见课件

条带化:==一个字节块可能存放在多个数据盘上==

  • 优点:并行存取,性能好,磁盘负载均衡
  • 缺点:可靠性、不同IO 请求需要排队

镜像:数据完全拷贝一份

  • 优点:可靠性
  • 缺点:存储开销

校验:数据通过某种运算(异或)得出,用以检验该组数字的正确性

  • 优点:可靠性,快速恢复
  • 缺点:开销

RAID

提高IO速度的方式

  1. 选择性能好的磁盘

  2. 并行化

  3. 采用适当的调度算法

  4. 设置磁盘高速缓冲区

  5. 提前读:利用局部性原理

    顺序访问时,常提前读入下一块到缓冲区中

  6. 延迟写:设置缓冲队列,直到来到队头时才真正写