当前位置: 首页 > news >正文

操作系统学习(十一)——磁盘

一、磁盘

在操作系统中,磁盘(Disk) 是最主要的辅助存储设备,主要用于持久化存储文件和数据
磁盘的管理对文件系统的效率系统性能与数据安全有直接影响。

磁盘访问速度通常由以下三部分组成:

时间类型说明
寻道时间(Seek Time)移动磁头到目标柱面所需的时间,是最耗时的一项
旋转延迟(Rotational Latency)等待目标扇区转到磁头下方的时间(平均为半圈)
传输时间(Transfer Time)将数据从磁盘传输到内存所需的时间

示例:假设磁盘每分钟转7200圈,1圈=8.3ms,平均旋转延迟≈4.15ms

二、磁盘的结构

1. 物理结构

磁盘通常指的是硬盘(HDD),它由多个刚性盘片Platter)组成,每个盘片都涂有磁性材料,两面都可以用于存储数据。

  • 盘面(Surface):盘片的每一面。
  • 磁道(Track):每个盘面上按同心圆划分出的圆环。
  • 柱面(Cylinder):所有盘面在相同位置的磁道集合。
  • 扇区(Sector):每条磁道被划分为若干扇区,是最小读写单位(如512B、4KB)。
  • 磁头(Head):每个盘面配有磁头,用于读写数据。
  • 磁臂(Arm):用于移动磁头到不同的柱面。

2. 磁盘的逻辑结构

操作系统不直接使用物理结构,而是将磁盘划分为逻辑块进行管理:

  • 块(Block):文件系统中的基本读写单位(通常为4KB)。
  • 操作系统通过逻辑块地址(LBA)访问磁盘,隐藏了磁道/扇区的具体细节。

三、磁盘调度算法

磁盘调度算法是操作系统中负责优化磁盘I/O访问顺序的策略,其目标是减少磁头移动距离提高系统吞吐量,以及改善响应时间
由于磁盘访问中,寻道时间(磁头移动)最耗时,因此调度算法通常围绕如何优化磁头移动顺序设计。

调度算法:

算法名称全称主要思想
FCFSFirst Come First Serve请求到达顺序处理
SSTFShortest Seek Time First优先处理离当前磁头最近的请求
SCAN电梯算法磁头向一个方向移动,直到末端再反向
C-SCANCircular SCAN只向一个方向扫描,回到起点后重扫
LOOK改进的 SCAN只扫描到最远请求处,再折返
C-LOOK改进的 C-SCAN只扫描到最远请求处,循环到最小请求

1. FCFS(先来先服务)

原理:按照请求到达的先后顺序访问磁道,不考虑当前位置和最优路径。

  • 简单,公平;
  • 但可能导致大量磁头移动,效率低。

示例:磁头当前位置在 50,队列为:95, 180, 34, 119, 11, 123, 62, 64;
磁道移动距离:50→95→180→34→119→11→123→62→64(移动总距离较大)

2. SSTF(最短寻道优先)

原理:每次选择距离当前磁头位置最近的请求。

  • 寻道时间最短,效率高;
  • 可能造成饥饿(远处请求长时间等待)。

当前磁头在 50,最近的是 62 → 64 → 34…

3. SCAN(电梯算法)

原理:磁头朝一个方向移动,处理沿途请求,遇到磁道边界后反向继续。

  • 类似电梯上下运行,公平性更好
  • 减少饥饿,适合高负载场景

磁头从50向右移动,顺序访问大于50的请求,之后向左折返处理剩余请求。

4. C-SCAN(循环 SCAN

原理:磁头只向一个方向移动,处理完最右侧请求后直接回到最左侧重新开始。

  • 响应时间更均匀,避免边缘请求等待太久;
  • 不处理反向请求,回程是空移动。

5. LOOK

原理:与 SCAN 类似,但只扫描实际存在的请求区间,不盲目到磁道边界。

  • 更高效率;
  • 磁头“看到”最远请求就回头。

6. C-LOOK

原理只向一个方向移动,处理到最远请求后立即跳转回起点。

  • 避免空磁道扫描;
  • 提升系统响应一致性。

磁盘调度算法对比:

例:磁头当前在 50,请求队列:[95, 180, 34, 119, 11, 123, 62, 64]FCFS   :50→95→180→34→119→11→123→62→64
SSTF   :50→62→64→34→11→95→119→123→180
SCAN   :50→62→64→95→119→123→180→回头→34→11
C-SCAN :50→62→64→95→119→123→180→跳转→11→34
LOOK   :50→62→64→95→119→123→180→回头→34→11(不达磁道尽头)
C-LOOK :50→62→64→95→119→123→180→跳转→11→34(不达磁道尽头)

五、磁盘的分区与格式化

1. 分区(Partitioning)

  • 磁盘可以被划分为多个逻辑分区(C盘、D盘等),每个分区可以使用不同的文件系统。
  • 分区信息存储在 主引导记录(MBR)GUID 分区表(GPT)

2. 格式化(Formatting)

  • 格式化是将分区初始化为某种文件系统的过程,包括:

    • 写入文件系统结构(如FAT表、inode表等);
    • 建立根目录;
    • 初始化空闲空间管理。

六、磁盘的管理技术

1. 缓存(Cache)

  • 磁盘访问速度慢,操作系统使用页缓存或缓冲区提升性能。

2. I/O 调度(I/O Scheduling)

  • 结合磁盘调度和进程管理,减少I/O等待时间。

3. 预读(Read Ahead)

  • 操作系统预判将要访问的数据并提前加载,提高命中率。

4. 延迟写(Write Back)

  • 写操作先缓存,延迟真正写入磁盘,提升性能。

七、磁盘类型对比

类型HDD(机械硬盘SSD(固态硬盘
构造旋转盘片闪存芯片
速度慢(机械移动)快(无移动部件)
寿命较长有擦写次数限制
成本便宜昂贵
适合场景大容量存储高速访问场景

八、RAID技术(冗余磁盘阵列)

RAID(Redundant Array of Independent Disks)将多个磁盘组合成一个逻辑磁盘,提升性能和容错能力。

RAID级别特点
RAID 0条带化,提高性能,但无冗余
RAID 1镜像,数据冗余,提高可靠性
RAID 5带奇偶校验,性能与冗余兼顾
RAID 10RAID 1 + RAID 0,兼顾性能和可靠性

九、现代磁盘相关技术

  • NVMe协议:针对SSD优化的高速存储协议,比传统SATA快得多。
  • TRIM指令:SSD特有,通知删除的数据块可重用,提高寿命。
  • SMART监控:磁盘自检技术,用于健康状态预警。
  • 热插拔与热备份:提高可维护性。
http://www.lqws.cn/news/82171.html

相关文章:

  • 第12次13: 修改登录密码
  • PID项目-记事本不显示下划线
  • Spring AI 之检索增强生成(Retrieval Augmented Generation)
  • 每日算法刷题计划Day20 6.2:leetcode二分答案3道题,用时1h20min
  • cursor如何开启自动运行模式
  • leetcode0513. 找树左下角的值-meidum
  • 案例:TASK OA
  • unidbg patch 初探 微博deviceId 案例
  • vue中父子参数传递双向的方式不同
  • 如何提升大模型召回率和实战案例
  • 【数据分析】第二章 Python基础
  • 渗透测试之信息搜集
  • window/linux ollama部署模型
  • vscode中的markdown表格列宽
  • 【LeetCode 热题100】BFS/DFS 实战:岛屿数量 腐烂的橘子(力扣200 / 994 )(Go语言版)
  • Unity中的MonoSingleton<T>与Singleton<T>
  • Day10
  • leetcode刷题日记——二叉树的层次遍历
  • 全文索引详解及适用场景分析
  • 【Unity】云渲染
  • Ubuntu22.04 安装 CUDA12.8
  • 为什么ping显示connect:network is unreachable,如何排查网络不通问题?
  • 【数学 逆序对 构造】P12386 [蓝桥杯 2023 省 Python B] 混乱的数组|普及+
  • HTTP、WebSocket、SSE 对比
  • py爬虫的话,selenium是不是能完全取代requests?
  • 【Spring底层分析】Spring AOP基本使用+万字底层源码阅读分析
  • 使用 So-VITS-SVC 实现明星声音克隆与视频音轨替换实战全流程
  • windows11安装编译QtMvvm
  • Qt/C++编写GB28181服务端工具/绿色版开箱即用/对标wvp-gb28181/实时画面预览/录像回放下载
  • pikachu靶场通关笔记10 XSS关卡06-XSS之盲打