北航OS课程笔记--六、磁盘管理

磁盘管理

磁盘工作原理

基本概念:

  • 磁盘由许多盘面组成

  • 盘面:一个盘片有正反两个盘面

  • 磁道,距离轴心越远编号越小;外道数据访问速度更快。

  • 扇区:磁道上有很多小的扇区,每个扇区保存的数据量相同

  • 柱面:同一硬盘中不同盘片的相同半径的磁道组成的圆柱。

  • 磁头:每个盘面有一个磁头,所有磁头只会在同一柱面上

可以用(柱面号,盘面号,扇区号)来定位一个磁盘块。

image-20240525224439541

Flash Disk的两种技术:

  • NAND的地址分为三部分:块号、块内页号、页内字节号
  • NAND一次数据访问一般经过三次寻址,随机字节读取速度慢
  • NOR的地址线足够多,且存储单元室并列排布,可以实现一次性的直接寻址,数据寻址时间基本是一个常量。
  • NOR成本较高,但数据传输速度比NAND快。
  • NAND的读写:
    • 读:以页为单位
    • 写:先擦除整个块,再写入特定页。

磁盘的组织与调度

CHS模式

磁头数NH(=盘面数):表示硬盘总共有几个磁头,也就是有几面盘片,最多为256个。

柱面数NC(=磁道数):表示硬盘每一面盘片上有几条磁道,最大为1024

扇区数NS:表示每一条磁道上有几个扇区,所有0扇区用于存放固件以及一些硬盘专用的文件,最大为1024。

这个扇区之前所有的物理扇区包含的字节数为8.46GB

LBA模式

将磁盘驱动器看做一个一维的逻辑块的数组,逻辑块是最小的传输单位。

LBA与CHS的地址转换

image-20240524153051021

磁盘空间管理

  • 位图:用一串二进制位反应磁盘空间中分配使用情况,每个物理块对应1位,分配的物理块为0,否则为1。
  • 空闲表:将所有空闲块记录在一个表中
  • 成组链接法

磁盘访问时间

  • 寻道时间:启动磁盘时间s+磁头移动n条磁道 所花费的时间之和

    Ts=s+m×n,m为常量

  • 旋转延迟时间:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。Tr=12r,r是转速,平均需要转半圈。

  • 传输时间:把数据从磁盘读出,或向磁盘写入数据经历的时间。

    Tt=brN,b为每次读写的字节数,r为旋转速度,N为磁道上的字节数。

总访问时间T=Ts+Tr+Tt

磁盘调度算法

对于OS的磁盘IO驱动,可能收到IO请求的速度大于磁盘实际能够执行的速度。

  • 先来先服务FCFS:按访问请求到达的先后次序服务

    • 仅应用在磁盘IO较少的场合。
  • 最短寻道时间优先SSTF:优先考虑距离当前磁头最近的访问请求。可能产生饥饿。

  • 扫描算法(SCAN)电梯调度:当有访问请求的时候,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,直到磁头步进最外(内)侧磁道,调转扫描方向。

    • 两侧磁道被访问频率低于中间磁道。
  • 循环扫描算法(C–SCAN):按照所要访问的柱面位置的次序去选择访问者;移动臂到达最后一个柱面后,立刻带动读写磁头快速返回到0号柱面,中途不为访问者服务。

    • 可以避免SCAN算法的问题。
  • LOOK和C–LOOK,到达最远端的一个请求即可返回。

提高磁盘IO性能

  • 磁盘高速缓存
  • 并行化(RAID)
  • 优化数据布局
  • 提前读延迟写

RAID廉价冗余磁盘阵列

一种把多块独立的硬盘(物理硬盘)按照不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。

组成磁盘阵列的不同方式称为RAID级别。

数据冗余的功能是:用户数据一旦发生损坏后,利用冗余信息可以使损失数据得以恢复,从而保障了用户数据的安全性。

  • RAID0:连续以位或字节为单位分割数据,并行交叉读写多个磁盘,具有很高的数据传输率,但没有数据冗余。

  • RAID1:镜像存储,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可以直接从镜像拷贝中读取数据。

    读性能好,写性能由最差的硬盘决定;可靠性高,单位成本最高。

  • RAID 0+1 &RAID 1+0:先分块后镜像&先镜像后分块。10容错性更好。

  • RAID2:海明码奇偶校验+条带存储。将数据条块化地分布在不同的硬盘上,条块单位为位或字节,使用海明码来提供错误检查及恢复。

    可以实现错误检查和恢复,数据传输率高。

    海明码长度:2r ≥𝑟+d+1,r是冗余码位数,d是数据位数。

    要能纠正信息字中的单个错误,所需要的码距最少为3。

  • RAID3:将磁盘分组,采用字节级别的条带,读写要访问组中所有盘,每组中有一个盘作为校验盘。

posted @   qiuer0121  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示