注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
水手勇敢的个人空间 https://home.eeworld.com.cn/space-uid-1549400.html [收藏] [复制] [分享] [RSS]
日志

《Linux内核深度解析》-文件系统简单介绍的学习

已有 645 次阅读2025-2-4 12:07

     一、文件系统架构

     1、Linux文件系统的架构如下图,分为用户空间、内核空间和硬件3个部分。

 

  1. 用户空间层面

       应用程序使用glibc库封装的标准I/O流函数访问文件。分别使用fopen(打开)、fclose(关闭)、fread(关闭)、fwrite(写)、fseek(设置文件偏移)等。

  1. 硬件层面

        外部存储设备分别为块设备、闪存、NVDIMM设备。

  1. 内核空间层面

        由于内核支持多种文件系统类型,为了给用户提供统一的操作接口,内核实现一个抽象层,虚拟文件系统(VFS)。文件系统分为以下4种:

  1. 块设备文件系统,机械硬盘和固态硬盘等块设备。常用的是文件系统EXT和btrfs。
  2. 闪存文件系统,存储设备为NAND闪存和NOR闪存。常用的是JFFS2、UBIFS。
  3. 内存文件系统,常用的是tmpfs。
  4. 伪文件系统,是为了使用虚拟文件系统的编程接口。常用的是sockfs、proc、sysfs、hugetlbfs、cgroup等。

 

     二、虚拟文件系统的数据结构

       虚拟文件系统定义一套统一的数据结构。

  1. 超级块。文件系统的开始部分是超级块,描述文件系统的总体信息,挂载文件系统时,内存中创建结构体super_block。
  2. VFS在内存中把目录组织为一棵树,进程根据树目录访问对应的文件系统。
  3. 根据文件系统的超级块格式,注册文件系统类型file_system_type.
  4. 索引节点。每个文件对应一个索引节点,每个索引节点有唯一编号。当内核访问存储设备上的文件时,会在内存中创建索引节点的结构体inode。
  5. 目录项。当内核访问存储设备上的一个目录项时,会在内存中创建该目录项的一个副本:结构体dentry。
  6. 当进程打开一个文件的时候,VFS就会创建文件的一个file结构体,然后为文件表中分配一个文件描述符,最后把文件描述符和file结构体的映射添加到打开文件表中。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章