Linux中的目录项是这样的

来源:互联网 发布:软件图标大全单个 编辑:程序博客网 时间:2024/06/05 21:50

       最近在学习虚拟文件系统,被VFS中的目录项这个概念搞晕了,现在终于找到正确答案了。

在此分享一下。

搞清目录项,要了解这几个概念:

1、inode索引节点:包含文件的除名字以外的所有信息:创建时间啊、什么权限啊、物理位置啊。

     我们要重点知道它包含文件所在的物理位置,每个索引节点对应唯一的索引号,整个VFS中唯一对应的额。

     另外要知道,我们所说的目录也是一种文件。

2、dentry目录项:主要包含文件名字和索引节点号,即inode。他们是一一对应的。


下面用个具体的例子来分析.

我用dentry “a”表示目录项a,inode "a"表示a的索引节点,name to inode表示name到索引节点号的映射

 当我们访问 /home/borman/study/hello.c 时,是怎么访问到hello.c 的?

 在这个例子中,/ home borman study hello.c都是目录项,前面四个是目录,最后一个是文件

 所以,目录项包括目录名和文件名,目录项结构中的索引节点号对应该文件对应的索引节点。

 实际上可以把这些都称为文件,目录也是文件嘛。

a、访问dentry "/" ,由name to inode 映射,得到inode "/"

b、 访问inode"/",找到dentry “home”

c、访问dentry "home" ,由name to inode 映射,得到inode "home"

d、 访问inode"home",找到dentry “borman”

e、访问dentry "borman" ,由name to inode 映射,得到inode "borman"

f、 访问inode"borman",找到dentry “study”

g、访问dentry "study" ,由name to inode 映射,得到inode "study"

h、 访问inode"study",找到dentry “hello.c”

i、访问dentry "borman" ,由name to inode 映射,得到inode "hello.c"

j、 访问inode"hello.c",读出数据



1 0