1. 不管是Linux还是Windows还是其他的系统,文件都是存放在磁盘上的数据。再本质一点就是01。一个文件最终就是一串01。<br />但是我们在使用电脑的时候,我们面对的并不是01。那么这中间就是操作系统帮我们将01数据以文件或者说目录这种方式为我们呈现出来。再具体一点,是操作系统负责文件功能的那个模块帮我们完成的。那,操作系统上负责文件相关功能的模块,就是文件系统。<br />文件夹系统竟然本质是与磁盘交互,并把磁盘上的01,转换为文件或目录的功能。那么具体文件系统是怎么操作这串01的,就会有所不同。于是就出现了不同的操作系统。

Linux文件系统

Linux文件系统实现文件管理,使用了两个重要的数据结构:索引节点、目录项

  • 索引节点:记录文件的元数据
  • 目录项:记录文件名称、有一个指向索引节点的指针和记录与其他目录项的层级关系
    • 关系
  • 一个索引节点与一个文件一一对应
  • 多个目录项可以共享一个索引节点

image.png
注:图中文字有误,目录项的话是内核维护在内存中的一个数据结构,不存放在磁盘中。只缓存在内存中。而索引块最初是磁盘,但是通常会缓存到内存中。

超级块?索引节点区?数据块区?

  • 它们是对磁盘的一个逻辑划分。并不是物理划分
  • 超级块:记录整个文件系统的详细信息,有多少个数据块(磁盘上的所有块都包含)、空闲多少块、每块的大小
  • 索引节点区:这个区域都是索引节点呗。
  • 数据块:存放真实的文件数据呗。
    • 形象描述一下索引节点和数据块

一个文件点击属性看到的文件描述就是存储在索引节点中的
打开文件,看到的文件内容都是存储在数据块节点中的。

  • 何时进入内存
    • 超级块:文件挂载时进入
    • 索引节点:文件被访问时进入