linux --- 虚拟文件系统

Linux 内核包含了文件管理子系统组件,它主要实现了虚拟文件系统(Virtual File System, VFS),虚拟文件系统屏蔽了各种硬件上的差异以及具体实现的细节,为所有的硬件设备提供统一的接口,从而达到设备无关性的目的,同时文件管理系统还为应用层提供统一的 API 接口。

在 Linux 下,一个与文件操作相关的应用程序结构如下图所示。

 

用户程序和 glibc 库都是属于用户空间的,本质都是用户程序。应用层的程序和 glibc 可能会调用到“系统调用层(SCI)”的函数,这些函数是 Linux 内核对外提供的函数接口,用户通过这些函数向系统申请操作。例如, C 库的 printf 函数使用了系统的 vsprintf 和 write 函数, C 库的 fopen、 fread、 fwrite 分别调用了系统的open、 read、 write 函数,具体可以阅读 glibc 的源码了解。

 

 

总的来说,为了使不同的文件系统共存, Linux 内核在用户层与具体文件系统之前增加了虚拟文件系统中间层,它对复杂的系统进行抽象化,对用户提供了统一的文件操作接口。无论是 ext2/3/4、FAT32、 NTFS 存储的文件,还是/proc、 /sys 提供的信息还是硬件设备,无论内容是在本地还是网络上,都使用一样的 open、 read、 write 来访问,使得“一切皆文件”的理念被实现,这也正是软件中间层的魅力。

 

posted @   流水灯  阅读(229)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示