Linux系统编程20_VFS虚拟文件系统
VFS 虚拟文件系统:
负责把VFS的文件I/O 转换成 页和块。
read()->sys_read()->具体文件系统的读方法->物理介质
生产酒也是这样的一个过程,首先是收割小麦,将小麦发酵蒸馏形成了酒(处理),然后装在瓶子里,运送到仓库(传输)。最后将所有的酒存在仓库里(存储)
物理设备比如磁盘可以看作是土地,有了土地之后并不能使用,它还无法存储酒。
需要在土地上建立仓库,并给每一个仓库通电,编号。这个过程可以理解为建立文件系统的过程。
文件系统建立以后就可以往里面存酒了。什么样的酒存在哪个仓库需要有管理人员记录在本子上。当然仓库在存储的时候不一定存的都是酒,也可能存一些箱子,或者是小麦。
虚拟文件系统可以理解为建造仓库的标准。
而在VFS则定义了虚拟文件系统,这个东西类似于建造仓库的标准。有了标准之后,所有的文件系统都需要按照这种标准来构建文件系统。
虚拟机文件系统介于具体的文件系统和C语言标准库之间
有了VFS之后,所有按照VFS接口开发的文件系统都可以接入linux,标准的接口提供了标准的操作,接口的设计理念一致贯穿于整个编程科学的发展。
基于VFS系统之上,要考虑的就是文件I/O,标准I/O,系统调用,C标准函数库,相关链接如下:
Linux系统编程1_C标准函数库和系统调用 - Grooovvve - 博客园 (cnblogs.com)
Linux系统编程8_文件I/O - Grooovvve - 博客园 (cnblogs.com)
Linux系统编程19_标准I/O - Grooovvve - 博客园 (cnblogs.com)
Linux系统编程12_标准库和POSIX标准头文件 - Grooovvve - 博客园 (cnblogs.com)
Linux系统编程15_C函数总结 - Grooovvve - 博客园 (cnblogs.com)
VFS系统之中有着对于文件的抽象机制,包括文件描述符(进程级),iNode表(系统级),以及由iNode引申出来的软硬链接:
//inode号码实际上是由文件系统来计算的;
Linux系统编程5_文件描述符 - Grooovvve - 博客园 (cnblogs.com)
Linux系统编程9_iNode机制 - Grooovvve - 博客园 (cnblogs.com)
Linux系统编程10_硬链接与软链接 - Grooovvve - 博客园 (cnblogs.com)
============================================================================
参考链接: