OS_theory_6

OS_theory_6

Charles Lv7

OS_theory_6

磁盘的结构

可用(柱面号,盘面号,扇区号) 来定位任意一个“磁盘块”。

文件的物理结构中文件数据存放在外存中的块号就可以转换成(柱面号,盘面号,扇区号)的地址形式。

磁盘调度算法

减少磁盘延迟时间的方法

磁盘的管理

磁盘管理

磁盘介绍

基本概念

  • 扇区(Sector):盘片被分为若干个扇区
  • 磁道(Track):盘片上以盘片中心为圆心,不同半径的同心圆环
  • 柱面(Cylinder):磁盘中,不同盘片相同半径的磁道组成的圆柱
  • 磁头(Head):每个磁盘有两个面,每个面一个磁头

定位一个扇区需要三个信息:柱面号,磁头号,扇区号

磁盘结构

磁盘实际扇区数比硬盘标签上标定的大,其中一部分用于存储硬盘的固件(硬盘控制器使用)
一部分是用户存储数据的区域,即工作区,也就是硬盘标定容量的扇区.
剩下的是保留区,超过在固件里定义的硬盘容量的那些扇区就称为保留扇区.
对于坏扇区(不管是生产缺陷,还是使用过程中磁介质老化缺陷),都存在一张表用于映射坏扇区到空闲扇区.对于生产缺陷,这张表叫 P 表,对于老化缺陷,这张表叫 G 表.

磁盘参数

  • 寻道时间:
    $Ts=m∗n+s$ (m是一个常数,可以认为是磁道的移动速度)
    把磁头从当前位置移动到指定磁道上所经历的时间,该时间是启动磁盘时间 s 与磁头移动 n 条磁道所花费的时间之和
  • 旋转延迟时间
    $Tr=\frac{1}{2r}$ (r 是旋转速度)
  • 传输时间
    $Tt=\frac{b}{rN}$ (b是每次读写操作的字节数,N是一个磁道上的字节数,r是旋转速度)
  • 访问时间
    $Ta=Ts+Tr+Tt$

磁盘组织

主引导扇区(MBR)

硬盘的0柱面,0磁头,1扇区称为主引导扇区,该记录占用512个字节,用于在硬盘启动的时候将系统控制权转给用户控制权.
其结构为:

  • 前446byte:包含启动代码和数据
  • 后64byte:四个分区项组成的分区表,记录了启动时需要的分区参数
  • 末2byte:魔数
    对于四个分区至少有一个主分区用于存储系统,其余盘为扩展磁盘分区用于存储数据,扩展磁盘分区可以分出多个逻辑分区.

磁盘调度

FCFS

算法思想:
按照请求到达的先后次序服务

  • 优点
    • 简单,公平
  • 缺点
    • 效率不高

SSTF

算法思想:
优先选择距当前磁头最近的访问请求进行服务

  • 优点
    • 改善了磁盘的平均服务时间
  • 缺点
    • 可能产生饥饿现象

SCAN

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

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

CSCAN

算法思想:

  • 按照所要访问的柱面位置的次序去选择访问者
  • 移动臂到达最后一个柱面后,立即带动读写磁头快速返回到 0 号柱面
  • 返回时不为任何的等待访问者服务.
  • 返回后可再次进行扫描

优点:
改进了 SCAN 算法偏向于处理那些接近最里或最外的磁道的请求的问题.

LOOK和C-LOOK

和SCAN,CSCAN类似,但是区别是当移动方向上不再有请求时, 就调转方向.

空间的管理

位图

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

空闲表

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

空闲链表法

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

成组链接法

把空白物理块分成组,在通过指针把组与组之间链接起来,这种管理空白块的方法称为成组链接法
成组链接法:
成组链接法

RAID

RAID(Redundant Arrays of Inexpensive Disks),也叫廉价冗余磁盘阵列,用低成本增加磁盘的容错能力

RAID1

镜像存储,在成对的独立磁盘上产生互为备份的数据.两个磁盘都可读取,提高了读取的性能,安全性很高,出现问题直接切换磁盘即可,但是成本也很高.

RAID2

海明码(汉明码)校验条带存储.将数据条块化地分布于不同的硬盘,条块单位为位或字节,使用海明码来提供错误检查及恢复.这种编码技术需要多个磁盘存放检查及恢复信息.

  • 并行存取,各个驱动器同步工作
  • 使用海明编码进行错误检测和纠正,数据传输率高
  • 是一种在多磁盘易出错环境中的有效选择,并未被广泛应用,目前还没有商业化产品

海明校验

海明校验的基本原理是异或运算.由异或运算的性质可以知道a⊕a=0,因此如果$a_0=a_1⊕a_2⊕…⊕a_n$则$a_i=a_{j_0}⊕…⊕a_{j_n} (i,j_0,…,j_n=0,1,…,n)$

对于海明校验的数据,令 P 为海明校验码的维数,D 为数据的维数,则
$2^P=P+D+1$

RAID3

使用奇偶校验条带存储,共享校验盘,数据条带存储单位为字节.同 RAID2 类似,但是RAID 3使用的是简单的奇偶校验,并用单块磁盘存放奇偶校验信息.
特点

  • 将磁盘分组,读写要访问组中所有盘,每组中有一个盘作为校验盘。
  • 校验盘一般采用奇偶校验.
  • 简单理解:先将分布在各个数据盘上的一组数据加起来,将和存放在冗余盘上。一旦某一个盘出错,只要将冗余盘上的和减去所有正确盘上的数据,得到的差就是出错的盘上的数据。
  • 缺点:恢复时间长

RAID4

RAID4 和 RAID3 类似,只是 RAID4 以数据块为单位分布于不同磁盘,单位更大,方便了读操作.但是每次写都需要访问奇偶盘,限制了速度,因此在商业中用的也很少
特点:

  • 冗余代价与 RAID3 相同
  • 访问数据的方法与 RAID3 不同,RAID3 每次读都需要访问阵列中所有磁盘

RAID5

和RAID4类似,奇偶校验,存储单位为块,只是不单独设计奇偶校验盘符,而是在磁盘上交叉地存取数据及奇偶校验信息.在 RAID5 上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量.
特点

  • 适合小数据块和随机读写的数据
  • 因为块更大,所以操作涉及的磁盘少,可并行
  • 写损失,每一次写产生四次读/写错做,其中两次读旧数据和奇偶信息,两次写新的数据和奇偶信息
  • 如果两块盘坏掉,RAID失效

RAID6

和RAID5类似,只是增加了第二个奇偶校验信息块,两者使用不同的算法,数据可靠性高,即使两块磁盘失效,也不影响数据.
特点:

  • 空间开销比 RAID5 大
  • 每次写非常差,要对两个校验盘操作
  • 可容忍双盘出错
  • 实际应用少:性能和成本问题

提高I/O速度

主要途径:

  • 提高磁盘性能
  • 提高并行度
  • 采用适当的调度算法
  • 设置高速缓冲

缓存

  • 磁盘高速缓存形式
  • 独立缓存(固定大小)
  • 虚拟内存(可变大小)
  • 数据交付
  • 直接交付(copy开销大)
  • 指针交付(内存管理麻烦)
  • 置换算法
  • 周期性写回

优化数据布局

  • 优化物理块分布
  • 连续摆放
  • 优化索引节点分布
  • 减少与数据块的距离
  • 与数据块结合

其他方法

  • 提前读:
  • 顺序访问的时候,把下一块提前读入缓冲区
  • 延迟写
  • 先写入缓冲区,直到缓冲区写满再写回磁盘
  • 虚拟盘
  • 利用内存空间仿真磁盘
  • Virtual disk 和 disk cache 区别:
  • Vitual disk的存放的内容由用户完全控制
  • Disk cache中的内容完全是由操作系统控制

完结撒花!!!

  • Title: OS_theory_6
  • Author: Charles
  • Created at : 2023-01-31 13:14:55
  • Updated at : 2023-11-05 21:36:18
  • Link: https://charles2530.github.io/2023/01/31/os-theory-6/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments