文件系统中各种概念的关系梳理:
1. Linux为每个进程维护一个task_struct结构体来维护进程信息,task_struct可以被称为进程描述符(Process Descriptor)或者进程控制块(Process Control Block)
2. task_struct中有一个指针struct files_struct *files指向files_struct结构体,files_struct被称为文件描述符表。文件描述符表中的每个表项是指向一个已打开的文件的指针(file*)
Sam注:file是linux内核实现的,是内核用来管理文件的,一般我们不会接触到;而FILE是标准C封装的,FILE中包含fd的信息,而且还包含IO缓冲,所以可以理解为FILE*是对fd的封装,我们在编写C文件操作时会经常用到。
563 struct file {
564 struct list_head f_list;
565 struct dentry *f_dentry;
566 struct vfsmount *f_vfsmnt;
567 struct file_operations *f_op;
568 atomic_t f_count;
569 unsigned int f_flags;
570 mode_t f_mode;
571 loff_t f_pos;
572 unsigned long f_reada, f_ramax, f_raend, f_ralen, f_rawin;
573 struct fown_struct f_owner;
574 unsigned int f_uid, f_gid;
575 int f_error;
576
577 unsigned long f_version;
578
579 /* needed for tty driver, and maybe others */
580 void *private_data;
581
582 /* preallocated helper kiobuf to speedup O_DIRECT */
583 struct kiobuf *f_iobuf;
584 long f_iobuf_lock;
585 };
564 struct list_head f_list;
565 struct dentry *f_dentry;
566 struct vfsmount *f_vfsmnt;
567 struct file_operations *f_op;
568 atomic_t f_count;
569 unsigned int f_flags;
570 mode_t f_mode;
571 loff_t f_pos;
572 unsigned long f_reada, f_ramax, f_raend, f_ralen, f_rawin;
573 struct fown_struct f_owner;
574 unsigned int f_uid, f_gid;
575 int f_error;
576
577 unsigned long f_version;
578
579 /* needed for tty driver, and maybe others */
580 void *private_data;
581
582 /* preallocated helper kiobuf to speedup O_DIRECT */
583 struct kiobuf *f_iobuf;
584 long f_iobuf_lock;
585 };
3. 进程通过文件描述符表的索引,如
#define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2来索引到一个file结构体实例,即表示一个打开的文件
4. file实例中有一个f_dentry成员,指向内存中dentry_cache中的一个dentry
dentry: 实现了文件名和inode编号的映射,当然还有其他功能
5. inode: 一个文件对应的inode包含这个文件访问权限、属主、组、大小、生成时间、访问时间、最后修改时间等信息,还有文件在数据块中存放位置的指针。每个文件(包括目录以及/proc目录下的文件)都有对应的inode,inode包括磁盘上的和内存中的inode,只有在需要时,Linux才会内存中创建inode.
inode又分两种:
(1) 磁盘上的inode: 跟在超级块后面的"i节点表"中,如下图所示
(2) 内存中的inode:
参考文档:
file:///C:/Users/nnnn/Desktop/VFS/linux%E5%91%BD%E4%BB%A4%E5%AE%9E%E8%B7%B5-%E5%85%B3%E4%BA%8Einode%20-%20%E5%8F%AF%E8%8B%A6%E5%8F%AF%E4%B9%90%20-%2051CTO%E6%8A%80%E6%9C%AF%E5%8D%9A%E5%AE%A2.htm
file:///C:/Users/nnnn/Desktop/VFS/linux%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B%E4%B9%8B%E5%9F%BA%E7%A1%80%E5%BF%85%E5%A4%87%EF%BC%88%E4%B8%89%EF%BC%89%EF%BC%9A%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6file%20descriptor%E4%B8%8Einode%E7%9A%84%E7%9B%B8%E5%85%B3%E7%9F%A5%E8%AF%86_Linux_%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F_%E7%BD%91%E7%BB%9C%E5%AD%A6%E9%99%A2_%E5%A4%A9%E6%96%B0%E7%BD%91.htm
file:///C:/Users/nnnn/Desktop/VFS/Linux%20%E7%9A%84%E8%99%9A%E6%8B%9F%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%28%E5%BC%BA%E7%83%88%E6%8E%A8%E8%8D%90%29%20demo%E5%A4%A7%E5%85%A8.htm
相关推荐
Linux虚拟文件系统VFS(Virtual Filesystem Switch)是一种抽象的文件系统接口,允许用户程序访问不同的逻辑文件系统,而不需要关心具体的文件系统实现细节。VFS将各种逻辑文件系统的操作和管理纳入到一个统一的框架...
对Linux文件系统用C语言进行模拟,在Windows 下建立自己的小型二级文件系统,并在自已建立的文件系统之上进行一系列的操作,包括文件系统的建立,对索引结点和目录文件的操作,目录的安全性设置,目录的检索以及文件...
【Linux虚拟文件系统(VFS)机制】 Linux操作系统以其强大的可扩展性和灵活性著称,其中一个重要特性就是支持多种不同的文件系统。Linux虚拟文件系统(Virtual File System, VFS)是实现这一特性的关键机制。VFS提供了...
是我最近学习Linux VFS 虚拟文件系统时收集的,感觉是学习VFS 虚拟文件系统的好资料,特共享给和我相似的朋友们共同学习. 资料主要有三个: 1. 解析 Linux 中的 VFS 文件系统机制.doc 比较好,写出了文件系统的...
虚拟文件系统(VFS) 虚拟文件系统(VFS)是由 Sun Microsystems 公司在定义网络文件系统(NFS)时创造的。它是一种用于网络环境的分布式文件系统,是允许和操作系统使用不同的文件系统实现的接口。 知识点: 1. ...
Linux虚拟文件系统(VFS)是Linux操作系统中一个核心软件层,负责处理与标准文件系统相关的所有系统调用。它所隐含的思想是把表示很多不同种类文件系统的共同信息放入内核。对所调用的函数,内核都能把它们替换成...
Linux虚拟文件系统(Virtual File System, VFS)是Linux操作系统的核心组成部分,它为不同类型的物理文件系统提供了一个统一的接口,使得Linux内核能够透明地管理和访问这些文件系统。VFS的设计目标是屏蔽各种物理...
Linux的虚拟文件系统(Virtual File System,简称VFS)是操作系统的核心组成部分,它为不同的文件系统提供了一个统一的接口,使得Linux可以支持多种文件系统,如EXT4、XFS、FAT32、NTFS等。VFS允许应用程序在不关心...
Linux虚拟文件系统(Virtual File System, VFS)是Linux操作系统中的一个核心组件,它提供了一个统一的接口,使得用户程序可以访问多种不同类型的文件系统,如EXT2、EXT3、EXT4、VFAT等,而无需关心底层的具体实现。...
Linux文件系统可以分为三大块:上层文件系统的系统调用、虚拟文件系统VFS(Virtual Filesystem Switch)和挂载到VFS中的各实际文件系统,如ext2、jffs等。 1. VFS概述 VFS是一种软件机制,可以称为Linux的文件系统...
### Linux虚拟文件系统对物理文件的管理 #### 引言 随着嵌入式技术的不断发展,Linux作为一种广泛采用的操作系统,被越来越多的嵌入式设备所青睐。Linux的强大之处在于它能够支持多种物理文件系统,这得益于其核心...
### Linux虚拟文件系统(VFS)全面剖析:打开、读、写逻辑 #### 一、概述 Linux虚拟文件系统(Virtual File System,简称VFS或VFAT)是Linux内核的一个重要组成部分,它提供了一个统一的接口来管理各种不同的文件...
### Linux虚拟文件系统(VFS)的数据结构关系 Linux操作系统中的虚拟文件系统(VFS)是内核中的一个重要组成部分,它提供了统一的接口来处理不同类型的文件系统。VFS通过抽象出一套通用的数据结构来实现这一目标,...
"LINUX虚拟文件系统分析" Linux虚拟文件系统(VFS)是Linux操作系统中的一种文件系统架构,它提供了一个统一的文件界面,使得用户可以方便地访问不同的文件系统。VFS是Linux操作系统中的一种软件层,它提供了文件...
虚拟文件系统(VFS)是Linux内核的一个核心组件,它为上层应用程序提供了一个统一的接口,使得它们无需关心底层存储设备使用的具体文件系统类型。 在Linux中,VFS作为一个抽象层,隐藏了各种物理文件系统之间的差异...
总的来说,虚拟文件系统 (VFS) 是 Linux 内核中的一项关键技术,它不仅为应用程序提供了统一的文件系统接口,还支持了多种文件系统的共存以及跨文件系统的文件操作。通过 VFS,Linux 实现了“一切皆文件”的哲学,并...
linux文件系统中的虚拟文件系统的数据结构,自己总结的,希望对大家有所帮助。