首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

虚拟文件系统

虚拟文件系统抽象数据结构 Linux奉行了Unix的理念:一切皆文件,比如一个目录是一个文件,一个设备也是一个文件等,因而文件系统在Linux中占有非常重要的地位。...VFS 抽象了几个数据结构来组织和管理不同的文件系统,分别为:超级块(super_block)、索引节点(inode)、目录结构(dentry) 和 文件结构(file),要理解 VFS 就必须先了解这些数据结构的定义和作用...超级块(super block) 因为Linux支持多文件系统,所以在内核中必须通过一个数据结构来描述具体文件系统的信息和相关的操作等,VFS 定义了一个名为 超级块(super_block) 的数据结构来描述具体的文件系统...不同于前面的两个对象,目录项对象没有对应的磁盘数据结构,VFS 在遍历路径名的过程中现场将它们逐个地解析成目录项对象。...*); int (*d_compare) (struct dentry *, struct qstr *, struct qstr *); int (*d_delete)(struct

1.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

Linux进程管理(一)进程数据结构

Linux内核中使用 task_struct 结构来表示一个进程,这个结构体保存了进程的所有信息,所以它非常庞大,在讲解Linux内核的进程管理,我们有必要先分析这个 task_struct 中的各项成员...双向链表: struct list_head tasks; Linux将所有的 task_struct 串联成一个双向循环链表 1、任务ID: pid_t pid; pid_t tgid; struct...task_struct *group_leader; pid:每个进程都有自己的 pid,它在内核中是唯一的,在Linux中,我们可以使用 ps -ef查看所有的进程,其中 PID 就是进程号。...*fs; /* Open file information: */ struct files_struct *files; 每个进程都有一个文件系统的数据结构...在Linux中有一个 union thread_union 共用体,其定义如下: union thread_union { #ifndef CONFIG_THREAD_INFO_IN_TASK struct

1K10

linux内核数据结构 红黑树

Linux的内核源代码中已经给我们实现了一棵红黑树,我们可以方便地拿过来进行使用。本文将参考Linux内核的源码和文档资料,介绍Linux内核中红黑树的实现细节及使用方法。...本文参考的Linux内核版本为linux-2.6.39.4,可以从官网 Index of /pub/linux/kernel/v2.6/ 上进行下载。...其中关于红黑树的文件位置为: 头文件: linux-2.6.39.4\include\linux\rbtree.h 实现代码:linux-2.6.39.4\lib\rbtree.c 文档说明:linux...每一个rb_node节点是嵌入在用RB树进行组织的数据结构中,而不是用rb_node指针进行数据结构的组织。...container_of宏取得包含ptr的数据结构的指针,具体是把ptr转化为type对象中member类型的指针,然后减去member类型在type对象的偏移量得到type对象的首地址。

1.3K40

谈谈 Linux 文件系统

目录项的数据结构linux/dcache.h 中: /* * Try to keep struct dentry aligned on 64 byte cachelines (this will...这些操作,需要一些额外的数据结构。...因此,还有几个与之相关的数据结构和上面提到的 VFS 的数据结构紧密相关。...文件系统 通过梳理 Linux 内核中的数据结构,可以基本摸清从进程打开文件,到 VFS 处理的过程中数据结构直接的关系,因为这些结构采用了「围绕数据的面向对象的编程方式」,结构本身就带着「方法」,所有也基本可以梳理理解...最后 本文梳理了 VFS 核心数据结构和之间的关系,但是了解 VFS 有什么用的。我认为是两个方面的作用。 第一是理解 Linux 文件系统是怎么工作的,这对以理解一次 IO 发生了什么很有帮助。

4.6K21

Linux根文件系统(rootfs原理详解)

1 文件系统 文件系统是os用来明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。...尽管内核是linux的核心,但文件却是用户与操作系统交互所采用的主要工具。这对linux来说尤其如此,这是因为在UNIX传统中,它使用文件I/O机制管理硬件设备和数据文件。...基于以上原因,linux在启动阶段使用rootfs文件系统,当磁盘驱动程序和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统。...mount_opts.mode, 0);                   sb->s_root = d_make_root(inode);                     static const struct qstr...name = QSTR_INIT(“/”, 1);[1*]                     __d_alloc(root_inode->i_sb, &name);           …

11.5K40
领券