linux系统——目录,目录项,索引节点(i node)的关系

来源:互联网 发布:mac导入照片到ipad 编辑:程序博客网 时间:2024/05/01 07:55
在看内核0.11文件系统源码时,发现自己的理解有个误区。在/linux-0.11/fs/inode.c中,iget()函数中有一句nr = ROOT_INO (ROOT_INO = 1),  就觉得很奇怪,怎么能给inode赋值为1呢,后来发现nr指的是inode号,而不是inode。于是,又翻出自己以前的博文,觉得写的比较清楚明白,希望遇到同样问题的可以参考一下。虽然只是一个小问题,但却会影响我们的理解。

目录,目录项,索引节点的关系
(貌似我在这个问题上纠结了很久,一直搞不清三者的关系,这次经过去我们小组的讨论,终于清晰了)

在Linux操作系统中,目录就是目录文件。

一个目录文件包含了一组目录项,目录项是放在data block中的。

一个目录项主要包括了文件名和索引节点号,索引节点号是指向索引节点表( system inode table )中对应的索引节点的。
或者这样解释一下目录项( 这是大家一起讨论出来的 ),因为目录可以包含子目录,目录是可以层层嵌套的,所以形成文件路径,而文件路径中的每一部分就是所谓的目录项(dentry)。
注:内核后来的版本采用ext文件系统时,目录项中就不是存放索引节点号,然后找到索引节点表,再找到索引节点了。而是目录项中存放文件名和一个指向索引节点的指针。

索引节点是文件系统处理文件所需要的所有信息都存放在称为索引节点的数据结构中。主要就是文件的属性,包括链接数、文件所有者、文件建立和修改的时间,文件在磁盘的位置,文件大小、使用权限等等。


原文地址:点击打开链接

0 0