北航OS课程笔记--六、磁盘管理
磁盘管理
磁盘工作原理
基本概念:
-
磁盘由许多盘面组成
-
盘面:一个盘片有正反两个盘面
-
磁道,距离轴心越远编号越小;外道数据访问速度更快。
-
扇区:磁道上有很多小的扇区,每个扇区保存的数据量相同
-
柱面:同一硬盘中不同盘片的相同半径的磁道组成的圆柱。
-
磁头:每个盘面有一个磁头,所有磁头只会在同一柱面上
可以用(柱面号,盘面号,扇区号)来定位一个磁盘块。

Flash Disk的两种技术:
- NAND的地址分为三部分:块号、块内页号、页内字节号
- NAND一次数据访问一般经过三次寻址,随机字节读取速度慢
- NOR的地址线足够多,且存储单元室并列排布,可以实现一次性的直接寻址,数据寻址时间基本是一个常量。
- NOR成本较高,但数据传输速度比NAND快。
- NAND的读写:
- 读:以页为单位
- 写:先擦除整个块,再写入特定页。
磁盘的组织与调度
CHS模式
磁头数NH(=盘面数):表示硬盘总共有几个磁头,也就是有几面盘片,最多为256个。
柱面数NC(=磁道数):表示硬盘每一面盘片上有几条磁道,最大为1024
扇区数NS:表示每一条磁道上有几个扇区,所有0扇区用于存放固件以及一些硬盘专用的文件,最大为1024。
这个扇区之前所有的物理扇区包含的字节数为8.46GB
LBA模式
将磁盘驱动器看做一个一维的逻辑块的数组,逻辑块是最小的传输单位。
LBA与CHS的地址转换
磁盘空间管理
- 位图:用一串二进制位反应磁盘空间中分配使用情况,每个物理块对应1位,分配的物理块为0,否则为1。
- 空闲表:将所有空闲块记录在一个表中
- 成组链接法
磁盘访问时间
-
寻道时间:启动磁盘时间s+磁头移动n条磁道 所花费的时间之和
,m为常量 -
旋转延迟时间:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。
,r是转速,平均需要转半圈。 -
传输时间:把数据从磁盘读出,或向磁盘写入数据经历的时间。
,b为每次读写的字节数,r为旋转速度,N为磁道上的字节数。
总访问时间
磁盘调度算法
对于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:将磁盘分组,采用字节级别的条带,读写要访问组中所有盘,每组中有一个盘作为校验盘。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)