目录项(directory entry)和目录(directory)是同一个东西吗?

这是计算机基础知识“文件系统的基本组成”视频的学习笔记


Linux文件系统会为每个文件分配两个数据结构:索引节点 (index node) 和目录项 (directory entry),它们主要用来记录文件的元信息和目录层次结构.

虽然目录项(directory entry)和目录(directory)名字相近,但是它们不是一个东西:

[if !supportLists]l [endif]目录是个文件,持久化存储在磁盘;

[if !supportLists]l [endif]而目录项是内核一个数据结构,缓存在内存。

如果查询目录频繁从磁盘读,效率会很低,所以内核会把已经读过的目录用目录项这个数据结构缓存在内存,下次再次读到相同的目录时,只需从内存读就可以,大大提高了文件系统的效率。

注意

目录项这个数据结构不只是表示目录,也是可以表示文件的,是操作系统中的一个概念。

目录也是文件,也是用索引节点唯一标识,和普通文件不同的是,普通文件在磁盘里面保存的是文件数据,而目录文件在磁盘里面保存子目录或文件。


索引节点是存储在硬盘上的数据,那么为了加速文件的访问,通常会把索引节点加载到内存中。

另外,磁盘进行格式化的时候,会被分成三个存储区域,分别是超级块、索引节点区和数据大区:

·超级块,用来存储文件系统的详细信息,比如块个数、块大小、空闲块等等;

·索引节点区,用来存储索引节点;

·数据块区,用来存储文件或目录数据。

我们不可能把超级块和索引节点区全部加载到内存,这样内存肯定撑不住,所以只有当需要使用的时候,才将其加载进内存,它们加载进内存的时机是不同的:

·超级块:当文件系统挂载时进入内存;

·索引节点区:当文件被访问时进入内存。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容