linux文件系统中inode和dentry的关系

本文发布时间: 2019-Mar-22
索引节点(inode)对象存放关于具体文件的一般信息。在linux操作系统中每个文件或目录都对应一个索引节点,所有索引节点构成一个数组。系统给每个索引节点分配一个号码,也就是该节点在数组中的索引号,称为索引节点号。文件系统正是靠这个索引节点号来识别一个文件。对于磁盘文件系统来说,这类对象通常对应与存放在磁盘上的文件控制块FCB。有上述可知,每个文件除了有一个索引节点数据结构(inode)外,还有一个目录项数据结构(dentry)。dentry结构中有一个d_inode指针指向相应的inode结构,dentry结构代表的是逻辑意义上的文件,描述文件的逻辑属性,因此目录项在磁盘上并没有对应的映像;而inode结构代表的是物理意义上的文件,记录其物理属性,对与一个具体的文件系统,inode结构在磁盘上有对应的映像。由此可见,一个索引节点对象可能对应多个目录项对象。一个有效的dentry结构必定对应一个inode结构,这是因为一个目录项要么代表一个文件,要么代表一个目录,而目录实际上也是文件。所以只要dentry结构是有效的,则其指针d_inode必定指向一个inode结构。反之则不成立,因为一个inode可以对应多个dentry结构,即一个文件可以有不止一个文件名或路径名。因为一个已经建立的文件可以被链接到其他文件名。所以inode结构中有一个i_dentry,凡是代表着同一个文件的所有目录项都通过其dentry结构体中的d_alias域挂入相应的inode结构体中的i_dentry队列中。


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:11pm
栏目列表