首先明白这两个概论:下面是我以前写的博客vfs中的话
a. 超级块对象struct super_block:
对应于存储特定文件系统的信息(如文件系统类型、文件大小上限、设备标识符等),磁盘文件放在特定扇区中,特殊文件如sysfs放在内存中,掉电后完完了。
b. 索引节点对象struct inode:
包含了内核在操作文件或目录时需要的全部信息。它表示文件类型、引用计数、访问时间等,如i_pipe表示是否为管道文件,还有i_device、i_cdev等。
c. 目录项对象struct dentry:
什么是目录项对象,如路径/mnt/cdrom/foo,/,mnt,cdrom,foo都是目录项对象。目录项对象是为了查找方便。包含使用记录、子目录等。
d.文件对象struct file:
文件对象表示进程已打开的文件。用户看到最多的就是它,包含文件对象的使用计数、用户的UID和GID等。
在内存中, 每个文件都有一个dentry(目录项)和inode(索引节点)结构,dentry记录着文件名,上级目录等信息,正是它形成了我们所看到的树状结构;而有关该文件的组织和管理的信息主要存放inode里面,它记录着文件在存储介质上的位置与分布。同时dentry->d_inode指向相应的inode结构。