0%

计算机存储与文件系统核心概念总结

📚 计算机存储与文件系统核心概念总结

这篇文章总结了计算机科学中几个核心的存储、缓存和文件系统概念,特别是围绕数据传输机制、缓存写入策略和 Unix-like 文件系统结构。


一、数据传输机制:PIO 与 DMA

在数据传输中,DMA(直接内存访问) 的介入是性能的关键。如果没有 DMA 介入,系统将采用 程序控制的 I/O (Programmed I/O, PIO) 方式。

特征 程序控制的 I/O (PIO) 直接内存访问 (DMA)
数据传输控制者 CPU DMA 控制器 (DMAC)
CPU 参与程度 (全程参与每字节/字的传输) (仅在初始化和传输完成时参与)
效率/性能 低 (CPU 效率低,占用率高) 高 (CPU 效率高,可执行其他任务)
适用场景 少量数据、低速设备 大量数据、高速设备

核心: PIO 模式下,CPU 扮演了“数据搬运工”的角色,必须亲自参与每一块数据的传输,导致 CPU 占用率高,系统吞吐量低。DMA 则将数据传输任务交给专用的 DMA 控制器,解放了 CPU。


二、CPU 缓存的写入策略:Write-Through vs Write-Back

CPU 缓存处理写入操作有两种主要策略,它们平衡了性能和数据一致性。

特征 写通 (Write-Through) 写回 (Write-Back)
更新主内存时间 立即: 同时更新缓存和主内存。 延迟: 只更新缓存,使用 脏位 (Dirty Bit) 标记,仅在缓存行被替换时才写回主内存。
写入性能 较低(需等待慢速主内存完成) 较高(只需更新快速缓存)
数据一致性 (缓存和主内存始终一致) 低(缓存数据可能比主内存新)
总线流量 高(每次写入都产生总线流量) 低(多次写入可能只产生一次总线流量)
适用场景 对数据一致性要求高 对性能要求高(现代 L1/L2 缓存主流)

三、文件系统中的硬链接与软链接

硬链接和软链接(符号链接)是创建文件别名的两种方式,它们在文件系统底层有本质区别。

特征 硬链接 (Hard Link) 软链接/符号链接 (Soft Link/Symlink)
本质 文件数据本身 的新名字 指向目标文件路径的特殊文件
Inode 与原文件拥有 相同的 Inode 拥有 独立的 Inode
目标丢失 删除原文件,只要硬链接计数 > 0,数据仍存在。 目标文件删除,链接失效(悬空链接)。
目录限制 不能 链接目录 (防止循环引用和 .. 歧义)。 可以 链接目录。
跨分区 不能 跨文件系统/分区。 可以 跨文件系统/分区。

为什么不能硬链接目录?

核心原因是为了维护文件系统的 有向无环图(树形结构)。允许硬链接目录会导致文件系统工具(如 fsck, tar)陷入 无限循环,并破坏 ..(父目录)指针的清晰定义。


四、文件系统结构与挂载 (Mount)

在 Unix-like 系统中,文件系统的组织依赖于 挂载 机制。

一、文件系统的双重本质与制作

文件系统的存在包含两个阶段:结构抽象制作 (Making)

1. 文件的结构抽象

文件系统是操作系统提供的一个抽象层,它屏蔽了底层存储介质(HDD、SSD 等)的物理细节,将存储空间组织成用户熟悉的:

  • 文件 (Files): 用于存储数据和程序。
  • 目录 (Directories): 用于组织文件和进行分层管理。

这种结构的核心是 Inode(索引节点),它存储了文件的元数据(权限、大小、创建时间、数据块在磁盘上的位置等),而文件名只是一个指向对应 Inode 的指针。

2. 文件系统的制作 (Making)

在任何磁盘分区可以存储数据之前,必须先对其进行初始化,即 “制作文件系统”(例如使用 mkfs 命令)。

  • 核心内容: 这个过程会在分区上写入关键的元数据结构,包括:
    • 超级块 (Superblock): 包含文件系统的主要参数和状态信息。
    • 索引节点区域 (Inode Table): 存储所有文件和目录的元数据。
    • 数据块区域 (Data Blocks): 实际存储文件内容的区域。

通过这一步,该分区才成为一个具有生命力的、可识别的存储实体。

二、挂载:构建统一的文件系统树

文件系统制作完成后是独立的,要让操作系统能够访问它,必须通过 挂载 (Mounting) 操作。

1. 根文件系统的地位 (/)

在类 Unix 系统中,系统文件结构的起点是 根目录 /。它由一个特定的文件系统承载,被称为 根文件系统 (Root File System)(例如:/dev/sda1 on /)。

  • 入口和基石: 根文件系统是系统启动时第一个被内核加载的文件系统,它提供了所有系统运行所需的基本程序和目录结构。
  • 骨架: 它是整个目录树的 骨架和接入点。所有其他文件系统都必须附着在这个骨架上。
2. 挂载的原理与机制

挂载是将一个 独立的文件系统 “粘贴”到根文件系统树上的一个 现有目录(挂载点) 的过程。

元素 解释 示例
独立文件系统 磁盘上的一个分区,或一个网络资源。 /dev/sda5(临时文件分区)
挂载点 (Mount Point) 根文件系统上一个 普通的、通常是空的目录 /tmp(一个目录)
工作流程 执行 mount /dev/sda5 /tmp。此后,访问 /tmp 目录下的内容,实际上访问的就是 /dev/sda5 分区上的数据。 访问 /tmp/data.log,就是在访问 /dev/sda5 上的文件。
意义 实现了存储的 逻辑隔离,使不同分区拥有独立的容错性和管理机制。
3. 统一访问的实现:VFS 层

用户之所以能够用统一的方式访问不同类型的文件系统(如 ext3, NTFS, AFS),得益于操作系统中的 虚拟文件系统 (VFS, Virtual File System) 抽象层。

  • VFS 作用: VFS 位于用户应用和具体文件系统驱动之间,为应用程序提供一套统一、标准的文件操作接口(如 read(), write())。
  • 工作机制: 当应用程序发出一个通用请求时,VFS 层会根据该文件所在的 挂载点,识别出具体的底层文件系统类型,并将通用请求翻译成该文件系统驱动(例如 ext3 驱动、AFS 驱动)能够理解的特定操作指令。

通过挂载机制和 VFS 层,操作系统成功实现了对底层存储的 透明性,为用户和应用程序提供了便捷且一致的访问体验。