news 2026/9/11 18:40:45

第二十讲:Linux 文件系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第二十讲:Linux 文件系统

大家好,接下来的一段时间我将开始学习野火的Linux 系统课程并将学习到的干货逐步更新到我的CSDN博客中。没时间刷课的同学可以把我的博客喂给AI 突击一下。

目录

一、一切皆文件思想

二、VFS 虚拟文件系统

VFS 内部核心结构体

两套操作函数集(函数指针,多态实现)

三、文件系统两大分类

四、完整调用层级

五、总结

一、一切皆文件思想

Linux 内核设计思想:屏蔽硬件差异,将普通文件、硬件设备、进程信息全部抽象为文件。 上层应用统一使用open/read/write/close一套系统调用接口访问,无需关心底层是磁盘、Flash、硬件设备还是内核运行信息。

二、VFS 虚拟文件系统

  1. VFS 不是真正可以挂载使用的文件系统,是内核抽象中间层(框架)
  2. 作用:定义一套统一的文件操作接口,由不同底层文件系统去实现这套接口。应用访问文件,本质是访问 VFS 抽象层,VFS 再转发给对应的底层文件系统。

VFS 内部核心结构体

  1. super_block:超级块,描述一个已经挂载的文件系统。
  2. inode:代表一个具体文件,保存文件元数据(权限、大小),不保存文件名。
  3. dentry:目录项,保存文件名、文件路径,用于路径查找缓存。

两套操作函数集(函数指针,多态实现)

  1. inode_operations:文件管理操作,rmdir删除、rename重命名、link创建链接。
  2. file_operations:文件读写操作,open打开、read读、write写。

VFS 只定义接口,真正逻辑由底层文件系统实现。

三、文件系统两大分类

普通文件系统、特殊虚拟文件系统是平级关系,二者都注册、挂载到 VFS 抽象层,不存在父子层级。

分类特点代表文件系统挂载点说明
普通文件系统(有实体)数据存储在磁盘 / Flash 物理介质,掉电数据保留ext4、fat32、ubifs//mntext4:Linux 主流磁盘文件系统fat32:U 盘、SD 卡,跨平台ubifs:嵌入式 NAND‑Flash 专用
特殊虚拟文件系统内核内存动态生成,无物理存储,断电数据丢失procfs、devfs、sysfs/proc/dev/sysprocfs:进程文件系统,查看进程、CPU、内存信息;devfs:设备文件系统,硬件操作接口;

四、完整调用层级

应用程序app → glibc库 ↓ ↓ 系统调用 open/read/write ↓ VFS虚拟文件系统(抽象框架,定义统一接口) ├─普通文件系统实现:ext4 / fat32 / ubifs → 磁盘/Flash硬件 └─虚拟特殊文件系统实现:procfs / devfs → 内核内存

调用流程:

  1. APP 发起文件操作,经过 glibc,触发系统调用;
  2. 进入内核 VFS 层,查找对应的super_blockinodedentry
  3. VFS 调用对应文件系统实现的inode_operations/file_operations
  4. 如果是普通文件系统,读写物理存储;虚拟文件系统,读取内核内存数据。

五、总结

  1. VFS:抽象框架,不能直接挂载;
  2. procfs、devfs:是真实可挂载的虚拟文件系统,运行在 VFS 之下;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 18:39:34

SIRS模型Matlab实现:从微分方程到参数扫描的完整源码解析

简介:SIRS传染病动力学模型的Matlab源码与数据包,面向生物数学、流行病学建模领域的学习者与科研人员,适用于数学建模竞赛、课程实验和传染病趋势仿真。模型将人群分为易感、感染、康复、免疫四类,通过四个微分方程描述状态转化&a…

作者头像 李华
网站建设 2026/9/11 18:35:31

WeChatMsg 使用教程:导出微信聊天记录

WeChatMsg 使用教程:导出微信聊天记录 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg WeCha…

作者头像 李华
网站建设 2026/9/11 18:33:42

Nacos 事件分发机制全解析:NotifyCenter 与本地消息总线设计

Nacos 事件分发机制全解析:NotifyCenter 与本地消息总线设计 【免费下载链接】nacos an easy-to-use dynamic service discovery, configuration and service management platform for building AI cloud native applications. 项目地址: https://gitcode.com/Git…

作者头像 李华
网站建设 2026/9/11 18:32:34

OpenProject快速上手:3分钟装好你的开源项目管理软件

OpenProject快速上手:3分钟装好你的开源项目管理软件 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issu…

作者头像 李华
网站建设 2026/9/11 18:32:22

【JAVA毕业设计】基于 SpringBoot 的在线鲜花商城系统的设计与实现 基于 Java SpringBoot 的鲜花销售管理系统(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/9/11 18:32:08

rasterio中Transform对象解析与应用指南

1. 理解rasterio中的Transform对象在地理空间数据处理领域,Transform对象是连接像素坐标和地理坐标的桥梁。这个看似简单的6元素数组背后,隐藏着地图投影、坐标转换和图像处理的核心逻辑。作为rasterio的核心组件之一,Transform对象直接影响着…

作者头像 李华