unix中,文件系统被安装在一个特定的安装节点上,该安装点在全局层次结构中被称为命名空间,所有已安装的文件系统都作为根文件系统树的枝叶出现在系统中。本质讲,文件系统是特殊的数据分层存储结构,包含文件、目录和相关的控制信息。
目录:
1.作用:文件是通过目录组织起来的,目录相当于文件夹,用来容纳对应的文件
2.一个例子: /home/csj/1.c
什么是目录,分析一下上面的例子。
根目录 / 这个名词应该都不陌生,后面的 home表示家目录,csj也表示目录,最后的1.c表示一个程序文件
3.上面的例子中目录中包含其他目录(即子目录),目录从而层层嵌套,形成了文件路径。
目录项:上面例子就是一个文件路径,路径中的每一部分(/,home,csj,1.c)都被称为目录条目(也即目录项)
总结:由目录和目录项的概念可知,目录项中可能包含普通文件如1.c , 故目录不等同于目录项。
索引节点:文件包含文件本身和文件的相关信息,这些相关信息包括访问控制权限、大小、拥有者、创建时间等内容,文件的相关信息被存储在一个单独的数据结构 中,该结构就叫做索引节点。索引节点包含了内核在操作文件或目录时需要的全部信息,一个索引节点代表文件系统中一个文件(当然可以是设备和管道这样的特殊 文件)。
超级块:包含文件系统信息的数据结构。文件系统的控制信息、单独文件的信息这些都包含超级块中。超级块通常存放在特定的扇区中。
总结:文件(目录也属于文件)信息按照索引节点形式存储在单独的块中;控制信息被集中存储在磁盘超级块中。
超级块:代表一个具体的已经安装的文件系统
索引节点:表示一个具体的文件
目录项:表示路径的一个组成部分
文件:表示由进程打开的文件
因为目录也当做文件(即目录文件)来处理,而每个文件对应一个索引节点,所以 路径 /home/csj/1.c 中包含的目录项各对应于一个索引节点(/,home,csj这三个相当于目录文件,1.c相当于普通文件)。
也可以这样说一个目录项主要包括了文件名和索引节点号,索引节点号是指向索引节点表( system inode table )中对应的索引节点的。
注:内核后来的版本采用ext文件系统时,目录项中就不是存放索引节点号,然后找到索引节点表,再找到索引节点了。而是目录项中存放文件名和一个指向索引节点的指针。