虚拟文件系统

安装点

  文件系统是数据特殊的分层存储。被安装在一个特定的安装点,该安装点在全局层次结构中被称为命名空间,所有安装文件系统被称为根文件系统。

超级块

  代表一个已经安装的文件系统。存储文件系统的额控制信息。

目录项对象

  文件通过目录组织,路径中的目录条目被称为目录项。目录被当做特殊的文件。

  在路径中,包括普通文件在内,每一部分都是目录项对象。路径中的每个组成部分都有索引节点对象表示。

  目录项对象没有磁盘对应的数据结构,VFS根据字符串形式的路径现场创建它。由于并非真正保存在磁盘,所以目录项结构体没有被修改标志。

目录项缓存

  1. 被使用的目录链表:该链表通过索引对象中的i_dentry项连接索引节点,给定一个索引节点可能有多个连接,所以可能有多个目录项对象
  2. “最近被使用的双向链表”:头结点是最新的数据,删除时从尾结点删除
  3. 哈希散列表:通过哈希函数将特定路径解析为目录对象

文件对象

  可以当做有序的字节串,面向字节流的抽象。在磁盘上也没有相应的数据对应

索引节点对象

  代表一个文件。包含内核在操作文件或

目录时的全部信息。仅当文件被访问时,索引节点才被创建。他可以是设备或管道这种特殊文件。

  文件相关的信息和文件本身区分开。访问权限、大小、拥有者等信息被称为元数据,放在单独的数据结构中(inode)。

和进程相关的数据结构

files_struct

fs_struct

  由进程描述符中fs域指向,包含文件系统和进程相关的信息,包含了当前工作目录和根目录

namespace

  由进程描述符中的namespace域指向,使得每一个进程都看到唯一的文件安装系统而不是目录。

  对于使用克隆标志CLONES_FILES、CLONE_FS创建的进程,共享这两个结构体。

  默认所有进程共享命名空间,只有在clone时使用CLONE_NEWS标志时,才会给进程另一个命名空间拷贝。

 

posted on 2020-11-22 16:59  tianzeng  阅读(149)  评论(0编辑  收藏  举报

导航