linux的VFS包含4个重要概念:
1. superblock,包含文件系统的信息,管理整个文件系统。
2. inode,索引文件(index node),代表一个文件,包含文件的元数据和数据,不包含文件名。
3. dentry,目录项,代表路径中的每个部分,包含文件路径到inode的映射。
4. file,文件,是文件在进程中的表示。
同时,在linux中一切兼文件,包括目录。目录的内容是文件名和inode号。
当打开一个文件/bin/vim
,系统首先把路径分解成/
、bin
、vim
,根据dentry查vim
的inode,如果dentry还没有bin
,会根据superblock中根目录的inode号得到它的子目录信息,其中就有bin
和它的inode,并把它放到dentry中,然后根据bin
的内容找到vim
的inode。最终,返回一个文件描述符(file descriptor)。