Linux通过虚拟文件系统,使得用户可以直接使用open()、read()、write()访问文件系统,这种协作性和泛型存取成为可能。
不管文件系统是什么,也不管文件系统位于何种介质,采用策略是统一的。
为了支持多文件系统,VFS提供了一个通用文件系统模型, 囊括了任何文件系统的常用功能集和行为。
用户空间的write()将调用VFS的sys_write(),然后调用文件系统中文件系统的写方法,最后写进物理介质中去。
Unix使用了四种和文件系统相关的传统抽象概念:文件、目录项、索引节点、安装点。
从本质上讲文件系统是特殊的数据分层存储结构,它包括文件、目录和相关的控制信息。
文件系统的通用操作包含创建、删除和安装等。多有已安装的文件系统都作为根文件系统树的枝叶出现在系统中。
文件其实可以做一个有序字节串,字节串抵押给字节是文件的头,最后一个字节是文件的尾。
文件通过目录组织起来,文件目录好比一个文件夹,用来容纳相关文件。目录可以包含子目录,层层嵌套,形成文件路径。
Unix系统将文件的相关信息和文件本身这两个概念加以区分,例如访问控制权限、大小、拥有者、创建按时间等信息。
而文件相关的信息被存储在单独的结构中,被称作索引节点。
VFS有四个主要对象类型,分别是:
超级块对象、索引节点对象、目录项对象、文件对象
五、超级块对象
六、超级块操作
七、索引节点对象
八、索引节点操作
九、目录项对象
十、目录项操作
十一、文件对象
十二、文件操作
十三、文件系统相关的数据结构
十四、和进程相关的数据结构
原文:https://www.cnblogs.com/ch122633/p/11402862.html