perrynzhou

专注于系统组件研发

0%

linux文件系统

文件系统(note by perrynzhou).png

1.文件系统的系统调用
  • 例如:read、write
2.虚拟文件系统(vfs virtual filesystem switch)
  • 超级块对象

    • 简介

      • 1.代表已安装文件系统
      • 2.每个文件系统都会对应一个超级块对象
      • 3.描述整个文件系统信息(组织结构和管理信息),不涉及文件系统的内容
      • 4.具体文件系统在安装时候建立,并在这些文件系统卸载时自动删除
      • 5.vfs的超级超级块存在于内存,每个分区所挂在的文件系统都有一个属于该文件系统和分区的超级块存在于磁盘
    • 操作对象

      • super_operations

        • 包括内核对特定文件系统所能调用的方法,比如read_inide/sync_fs等
  • 索引节点对象

    • 简介

      • 1.代表一个文件,包括访问权限、属主、组、大小、生成时间和访问时间
      • 2.内核操作文件或者目录时需要的全部信息,一个文件对应一个inode(唯一)
      • 3.具体文件系统的inode持久化在磁盘,访问时调入内存,vfs的inode存在于内存
      • 4.vfs的inode是xfs inode的抽象,映射与扩充,而后者是前者的静态信息部分,也是对前者(vfs inode)的具体化、实例化和持久化
    • 操作对象

      • inode_operations

        • 包括内核针对文件所能调用的方法,比如create/link等
  • 目录项对象(动态创建)

    • 简介

      • 1.代表一个目录项,是路径组成的一部分

      • 2.用于方便查找目录,找到后缓存目录到dcache中

        • 例如/bin/vi,这个目录bin是目录文件,vi是普通文件
      • 3.该目录对象存在于内存,磁盘并没有任何的持久化

    • 操作对象

      • dentry_operations

        • 内核针对目录所能调用方法,比如d_cpmpare/d_delete等
  • 文件对象

    • 简介

      • 1.代表进程打开的文件的内存表现形式

        • 调用open/close来创建和销毁文件对象
      • 2.文件对象存在于内存,在磁盘并没有具体的存储

    • 操作对象

      • file_operations

        • 内核针对进程已打开的文件所能调用方法比如read/write等
挂在到VFS的实际文件系统
  • 例如:ext3、ext4、xfs

虚拟文件系统.png