操作系统-理论-磁盘管理
磁盘的工作原理
磁盘是使用最多的外部存储系统。
基本结构
基本结构为盘片+磁头。每个磁盘有多个盘片、多个磁头,对应关系是每个盘片对应两个磁头(正反两面)。
- 扇区:盘片被划分为多个扇区,同个磁盘中的各个盘片扇区数相同。每个磁道有着相同的扇区数。
- 磁道:盘片上以盘片中心为圆心,不同半径的同心圆。
- 柱面:==不同盘片相同半径的磁道==所组成的圆柱。
读写的顺序是:==按照柱面从外到内进行读写,在柱面内的顺序为先读同一盘面的各个扇区,再从上到下读不同盘面==(不严谨,仅代表盘片的顺序)。
磁盘的划分
硬盘实际扇区数比硬盘标签上标定的大:
- 固件区:于存储硬盘的固件(硬盘控制器使用);
- 工作区 :用户存储数据的区域,也就是硬盘标定容量的扇区
- 保留区:超过在固件里定义的硬盘容量的扇区部分
对于磁盘,每个磁道可利用的扇区数并不是常量。绝大多数磁盘都有一些缺陷扇区。这些无法使用的扇区会破坏地址空间的连续性,因此必须用磁盘上的其他空闲扇区来替代这些缺陷扇区。
- P表:又称为永久缺陷列表,用于记录硬盘生产过程中产生的缺陷
- G表:又称为增长缺陷列表,用于记录硬盘使用过程中由于磁介质性能变弱而引起的缺陷
磁盘的组织
- 主引导扇区MBR
- 分区表
- 分区引导扇区DBR
- 容量及访问时间
主引导区MBR
主引导记录MBR:硬盘的0柱面、0磁头、1扇区称为主引导扇区。
MBR不属于任何一个操作系统,不会夹带操作系统的性质,具有公共引导的特性。
MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的。该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。
MBR的内容:
- 前446字节为启动代码及数据
- 447-510字节:分区表DPT。由4个分区项组成(限制了只能有4个主分区),每项为16字节,记录了启动时所需的分区参数
- 511-512字节:幻数
AA
和55
,若没有则被认为是没有被分区的硬盘
硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区 。
-
一个硬盘主分区至少有1个,最多4个
主分区只能有一个是激活的active,其余为inactive
-
扩展分区可以没有,最多1个。主分区+扩展分区总共不能超过4个
分区如果没有被分为主分区和逻辑分区就被浪费了,一般把主分区意外的部分全分为扩展分区
-
扩展分区不能直接使用,需要分为若干个逻辑分区。逻辑分区可以有若干个
磁盘分区表DPT
硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节
DPT记录了分区所在的起始以及结束的磁头号、扇区号、柱面号,之前已经使用的扇区数。
磁盘的访问
使用逻辑块对磁盘的空间进行管理。
记每个磁道的扇区数为s,磁头的总数为t,柱面号为i,磁头号为j,扇区号为k。
==则可以得到块号==
==理解的关键在于:磁盘的读写是从内柱面到外柱面,在柱面内为从上到下访问。==
- 柱面号 = 块号/(磁头数*扇区数)=
- 磁头号 = (块号mod(磁头数*扇区数))/扇区数=
- 柱面号 = (块号mod(磁头数*扇区数))mod扇区数=
访问时间=寻道时间+旋转延迟时间+传输时间
- 寻道时间:找到对应的磁道,认为是与移动的磁道数n相关,,m、s为常数,s为启动时间
- 旋转延迟时间:转到对应的扇区,认为是转半圈的时间
- 传输时间:就是传输信息的时间
磁盘的调度
当磁盘有多个读写请求时,磁头如何移动才能有最高的读写效率。
先来先服务FCFS
按访问请求到达的先后次序服务。
- 简单、公平
- 效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。
最短寻道时间优先算法SSTF
优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。
- 改善了磁盘平均服务时间。
- 可能产生“饥饿”现象,造成某些访问请求长期等待得不到服务。
扫描算法(SCAN )(电梯调度)
考虑捎带的磁头移动
当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。
- 克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向
- 但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。
循环扫描算法(CSCAN)
按照所要访问的柱面位置的次序去选择访问者。移动臂到达最后一个柱面后,立即带动读写磁头快速返回到 0 号柱面。
==返回时不为任何的等待访问者服务。返回后可再次进行扫描。==
磁盘的空间管理
位图、空闲表、成组链接法
位图
用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配的物理块为0,否则为1
申请物理块时,可以在位示图中查找1的位,返回对应的物理块号;归还时,将对应位转置为1
空闲表
将所有空闲块记录在一个表中,即空闲表;主要记录两项内容:起始块号,块数
成组链接法
空闲块链表:把所有空闲块链成一个表
成组链接法:把空白物理块分成组,再通过指针把组与组之间链接起来
成组链接法的优点:
- 空白块号登记不占用额外空间;
- 节省时间;
- 采用后进先出的栈结构思想
RAID
见课件
条带化:==一个字节块可能存放在多个数据盘上==
- 优点:并行存取,性能好,磁盘负载均衡
- 缺点:可靠性、不同IO 请求需要排队
镜像:数据完全拷贝一份
- 优点:可靠性
- 缺点:存储开销
校验:数据通过某种运算(异或)得出,用以检验该组数字的正确性
- 优点:可靠性,快速恢复
- 缺点:开销
提高IO速度的方式
-
选择性能好的磁盘
-
并行化
-
采用适当的调度算法
-
设置磁盘高速缓冲区
-
提前读:利用局部性原理
顺序访问时,常提前读入下一块到缓冲区中
-
延迟写:设置缓冲队列,直到来到队头时才真正写