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 来访问,使得“一切皆文件”的理念被实现,这也正是软件中间层的魅力。
标签:文件,函数,glibc,linux,文件系统,---,虚拟,Linux From: https://www.cnblogs.com/god-of-death/p/16756526.html