高手博客收藏夹: post #11626 — TG.ME

Linux 内核之旅(二):VFS

0x00 前言

Linux支持多种文件系统格式(如ext2、ext3、reiserfs、FAT、NTFS、iso9660等),不同的磁盘分区或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mount到某个目录下,使开发者看到一个统一的目录树,各种文件系统上的目录和文件,读写操作用起来也都是一样的。Linux内核在各种不同的文件系统格式之上做了一个抽象层,使得文件、目录、读写访问等概念成为抽象层的概念,因此各种文件系统看起来用起来都一样,这个抽象层称为虚拟文件系统(VFS,Virtual Filesystem)

基础结构

inode定义,与磁盘上真实文件的一对一映射
file定义,一个 file 结构体代表一个物理文件的上下文,不同的进程,甚至同一个进程可以多次打开一个文件,因此具有多个 file struct
dentry定义,多个 dentry 可以指向同一个 inode

内核数据结构

0x0 VFS 关联task_struct

0x0 files_struct

0x0 参考

VFS
vfs
File Descriptor Table
Linux的虚拟文件系统VFS
linux vfs轮廓
从文件 I/O 看 Linux 的虚拟文件系统

via 熊喵君的博客
December 6, 2024 1.7K 2