设备管理

1. 缓冲区

缓冲区 是一块预留在内存中的区域,用于临时存放数据,从而使得输入/输出操作与其他处理操作可以相对独立地进行。缓冲区 的使用可以减少 I/O 操作的 等待时间,提高系统的整体效率。

缓冲(Buffer)与 缓存(Cache)的区别:简单来说就是Buffer偏重于 ,而Cache偏重于


Buffer 的核心作用是用来缓冲,缓和冲击(对输出设备的冲击,包括磁盘、打印机、显示器)。
比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写。用个Buffer 暂存 起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了 ,极大缓和了冲击。


Cache 的核心作用是 加快取用的速度(加快读取速度,包括CPU读内存、内存读磁盘、用户通过浏览器请求资源)。
比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

1.1. 磁盘高速缓存

磁盘缓存 指的是利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。

因此,磁盘高速缓存 从逻辑上属于磁盘,物理上则是驻留在内存中的盘块

1.2. 缓冲区实现

  • 单缓冲
    单缓冲 策略中,只有一个 缓冲区 用于数据的读取或写入。
    工作过程

    • 数据从源(例如,磁盘)读入到 单个缓冲区
    • 当数据在 缓冲区 内时,应用程序可以从该 缓冲区 中处理数据。
    • 当应用程序处理完 缓冲区 中的数据并需要更多数据时,新的数据再次被读入到同一 缓冲区 中。

    缺点:当 缓冲区 被填满并且数据被应用程序处理时,I/O 操作必须等待,直到 缓冲区 再次可用。这可能导致 I/O 操作的 延迟
    单缓冲

  • 双缓冲
    双缓冲 使用 两个缓冲区。当一个缓冲区被应用程序用于 读取或处理数据 时,另一个 缓冲区 可以用于 并行的 I/O 操作
    工作过程

    • 数据从源读入到第一个 缓冲区
    • 当第一个缓冲区的数据被应用程序处理时,第二个缓冲区可以开始 并行地加载下一批数据
    • 一旦第一个 缓冲区 的数据被处理完毕,应用程序可以立即 切换 到第二个缓冲区,而第一个缓冲区则开始加载新的数据。

    优点:由于两个缓冲区 交替使用,I/O 操作和数据处理可以 并行 进行,从而减少了等待时间,提高了效率。
    双缓冲

  • 循环缓冲
    循环缓冲 是一个固定大小的 缓冲区,其特点是当达到缓冲区的 尾部 时,下一个位置自动“回绕”到缓冲区的 开始位置。循环缓冲 的主要优点是它可以 无限地存储新数据,只要覆盖旧数据即可。
    工作原理

    • 循环缓冲有两个指针:一个是 “写” 指针,另一个是 “读” 指针。
    • 当新数据 到来 时,数据被写入“写”指针当前指向的位置,并将 “写”指针向前移动
    • 当数据需要被消费或读取 时,数据从“读”指针的当前位置读出,并将 “读”指针向前移动
    • 如果“写”指针到达 缓冲区 的尾部并继续前进,它会 回绕 到缓冲区的开始位置。同样,“读"指针也会如此。


2. 磁盘

2.1. 磁盘管理

一个新的磁盘只是一个磁性记录材料的空白盘。
下面是有关磁盘的一些概念:

  1. 磁头(Heads):磁头是位于硬盘驱动器的读/写臂上的设备,用于 读取和写入磁盘上的数据。每个盘片(硬盘通常包含多个盘片,每个盘片都有两个表面)上都有一个磁头,因此每个磁头都可以读取或写入盘片上的数据。磁头通过移动到不同的 磁道(track) 来寻找并访问数据。
  2. 磁道(Track):磁道是磁盘上的一个 同心圆环
  3. 柱面(Cylinders):柱面是硬盘上的一个 数据存储区域,由相同半径位置上的多个盘片上的磁道组成。换句话说,它是 所有盘片上相同半径位置的磁道的集合
  4. 扇区(Sectors):扇区是磁盘上的 最小数据存储单元。磁盘通常被划分成许多扇区,每个扇区可以存储一定数量的数据。扇区的大小通常是 512 字节 或 4KB。操作系统和磁盘控制器使用扇区作为数据的最小单元,以读取和写入数据。
    磁盘

在磁盘可以存储数据之前,必须对其进行 物理格式化(也叫做 低级格式化)。

物理格式化(低级格式化) 是指在磁盘的物理表面上创建 磁道(track)、扇区(sector)、写入控制信息 以及 测试和标记坏扇区等过程。通过这一过程,磁盘被划分为可供读写头访问的物理存储单元,为数据存储和检索提供基础结构。

一般来说,现代硬盘在出厂时已完成 物理格式化,并优化了 磁道扇区 的布局。用户通常只需进行 逻辑格式化 即可使用。

逻辑格式化(高级格式化) 是在物理格式化基础上 创建文件系统(如 NTFS、FAT32)的过程,由用户通过操作系统完成。它组织数据的逻辑结构,如文件分配表和目录,方便操作系统管理数据。

磁盘与硬盘关系
磁盘 是所有 圆盘状存储介质 的统称,包含三大类:

  • 软盘:90年代流行,容量仅1.44MB
  • 光盘:CD/DVD/蓝光,用激光读写
  • 硬盘(HDD):金属盘片+磁头,现在最常见(是 密封金属盒里的磁性存储设备

机械硬盘 就是指上面的硬盘;而 固态硬盘(SSD)是由芯片闪存储存(类似超大U盘)。

2.2. 磁盘调度算法

Tip
磁道的编号顺序

  • 在磁盘驱动器中,磁道编号通常是 从外到内的。磁盘表面被划分为同心圆,这些同心圆称为 磁道最外面 的磁道通常被赋予 最小 的编号(例如,0 号磁道),随着磁道向内圈逐渐增加,编号递增。这种编号方式允许磁盘的读写头更容易地定位到磁道的起始位置,因为磁盘的旋转通常是从外缘开始。
  • FCFS
    FCFS 即 First Come First Service,先来先服务算法。
    FCFS 是一种最简单的磁盘调度算法,按照请求到达的先后顺序依次处理磁盘访问任务。
    假设在当前时刻,磁道 55、58、39、18、90、160、150、38、184 分别先后到达,那么 FCFS 会有如下图所示的访问顺序:
    FCFS

  • SSTF
    SSTF 即 Shortest Seek Time First,最短寻道时间优先算法
    磁盘进行调度时每次都选择 距离当前磁头位置最近的请求 进行服务。旨在最小化磁头的移动距离,从而降低平均寻道时间。它的核心思想是“贪心”,每次选择最优的下一步。
    假设在当前时刻,磁道 55、58、39、18、90、160、150、38、184 正在等待服务,那么 SSTF 会有如下图所示的访问顺序:
    SSTF

  • SCAN
    SCAN 即 电梯调度算法
    磁头从一个方向开始移动,直到该方向上没有更多的请求或达到边界,然后磁头 改变方向并继续服务请求。因为磁头移动规律与电梯运行类似,所以这种算法也称为电梯调度算法。
    假设在当前时刻,磁道 55、58、39、18、90、160、150、38、184 正在等待服务,磁头正在向内移动(向更高编号的磁道移动),那么 SCAN 会有如下图所示的访问顺序:
    SCAN

  • C-SCAN
    C-SCAN 即 Cycle Scan,循环扫描算法
    和 SCAN 相似,但进行了一些 改进。在 C-SCAN 中,磁头始终沿一个方向移动(例如向外),处理沿途请求,到达磁盘边界后立即返回到另一端(例如最内侧)开始新一轮扫描,而 不处理返回路径上的请求
    C-SCAN



Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐