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

VFS- 内核是如何抽象文件系统的

这个 wiki 上列出了很多 Linux 的文件系统类型。...对于这些文件系统,Linux 做了一层抽象就是 VFS 虚拟文件系统,这个其实就是软件设计必然的过程,对于不同的实现规定统一的接口,也就是定义与实现分离,如果想要自己实现一个文件系统的话只要实现一个满足...对于文件系统来说挂载点是个很有意思的点,在内核当中挂载点用vfsmount表示,挂载点是文件系统之间的衔接部分,如果要添加一个新的文件系统势必要将文件系统挂载在某个目录下面使得文件系统生效,vfsmount...vfsmount的主要内容是vfsmount的拓扑关系以及指向的目录和super_block。所以从宏观的角度来说,整个文件系统的组织是如图这样的。 ?...dentry 和 inode 的关系是多对一的,即多个 dentry 可以指向同一个文件,这和 linux 当中的文件链接有关。

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

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

尽管内核是linux的核心,但文件却是用户与操作系统交互所采用的主要工具。这对linux来说尤其如此,这是因为在UNIX传统中,它使用文件I/O机制管理硬件设备和数据文件。...基于以上原因,linux在启动阶段使用rootfs文件系统,当磁盘驱动程序和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统。...[1*]处设置了根目录的名字为“/”; [2*]处设置了vfsmount中的root目录; [3*]处设置了vfsmount中的超级块; [4*]处设置了vfsmount中的文件挂载点,指向了自己...; [5*]处设置了vfsmount中的父文件系统的vfsmount为自己; 5 根文件系统各个常用目录简介 正常来说,根文件系统至少包括以下目录: /etc/:存储重要的配置文件。.../dev目录 该目录下存放的是设备文件,设备文件是Linux中特有的文件类型,在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。

12.1K40

linux rootfs_linux常用文件系统类型

linux中有一个让很多初学者都不是特别清楚的概念,叫做“根文件系统”。我接触linux前前后后也好几年了,但是对这个问题,至今也不是特别的清楚,至少没法给出一个很全面很到位的解释。...这里有一句话,我觉得非常精辟而且到位的点出了文件系统在linux中的重要性: 尽管内核是linux的核心,但文件却是用户与操作系统交互所采用的主要工具。...基于以上原因,linux在启动阶段使用rootfs文件系统,当磁盘驱动程序和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统。...[1*]处设置了根目录的名字为“/”; [2*]处设置了vfsmount中的root目录; [3*]处设置了vfsmount中的超级块; [4*]处设置了vfsmount中的文件挂载点,指向了自己...; [5*]处设置了vfsmount中的父文件系统的vfsmount为自己; 五、根文件系统各个常用目录简介 正常来说,根文件系统至少包括以下目录: /etc/:存储重要的配置文件。

1.6K20

Linux Kernel 模块内存泄露查找 (2)

在之前的一篇博文>中,我介绍了一种查找内核内存泄露的一种方法。...++++++++++++++++++++++++++++ sock_inode_cache在内核中存储socket的内核结构,而dentry则对应文件或者目录在内核中的数据结构,如果你和我一样,对Linux...根本原因 程序执行流程如下: (1) 根据文件fd,获取file对象,从file对象中获取path对象,并使用path指针pPath记录path对象地址(path对象中包扩了dentry和vfsmount...(2)程序中需对dentry和vfsmount进行访问,于是采用path_get(pPath)对引用计数加一 (3)调用系统中的原始的close,来关闭文件 (4)进行一系列的操作后,采用path_put...(pPath)对dentry和vfsmount引用计数减一 问题就出在第(3)步和第(4)步上:如果只有一个进程对文件打开并进行了访问,然后关闭文件,则进入我们产品的Hook函数,当进入第三步的时候,调用系统原始的

1.3K30

磁盘文件系统三

挂载到linux的VFS中 vfs对象 VFS采用了面向对象的设计思路,将一系列概念抽象出来作为对象而存在,它们包含数据的同时也包含了操作这些数据的方法。...Linux将文件的相关信息,比如访问权限、大小、创建时间等信息,与文件本身区分开来。文件的相关信息又被称为文件的元数据。 (3)目录项(struct dentry)。...除了上述4个主要对象外,VFS还包含了其他很多对象,比如用于描述各种文件系统类型的struct file_system_type,用于描述文件系统安装点的struct vfsmount等。...一个文件被打开的时候,它的file对象是使用dentry、inode、vfsmount对象中的信息填充的,比如它对应的文件操作f_op由inode对象的i_fop字段得到。 ?...这样就将磁盘挂载到linux的VFS文件文件系统中了。其中,file_system_type用于描述具体文件系统的类型,struct vfsmount用于描述一个文件系统的安装实例。

83920

套接字socket 的地址族和类型、工作原理、创建过程

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题...(3)在Linux 系统中,socket 属于文件系统的一部分,网络通信可以被看作是对文件的读取,使得我们对网络的控制和对文件的控制一样方便。...(二)、套接字接口的种类 Linux 支持多种套接字种类,不同的套接字种类称为“地址族”,这是因为每种套接字种类拥有自己的通信寻址方法。Linux 所支持的套接字地址族见表12.3。...内核中为套接字定义了一种特殊的文件类型,形成一种特殊的文件系统sockfs,其定义于net/socket.c: static struct vfsmount *sock_mnt; static DECLARE_FSTYPE...安装时有个作为连接件的vfsmount 数据结构,这个结构的地址就保存在一个全局的指针sock_mnt 中。

2.6K120

赵晨雨:从文件系统的数据结构看Linux内核设计

跟随陈老师学习linux内核两个月了,对linux内核产生了极大的兴趣,最近学习文件系统,有一些自己的看法,很荣幸能在linux内核之旅进行分享^_^ 本篇文章使用尽量通俗的语言来说明linux内核文件系统中各个数据结构之间的关系...由于linux内核足够复杂,就会有多种解释方式,我认为所有关于linux内核的书籍,都是不同作者对内核的不同的看法,说不定这些看法对于linus本人来说都是很巧妙的,所以我在这里也大胆地提出自己对linux...第三条线(蓝紫色) 我们直接来看图中的第7个结构体,vfsmount结构体,这里先说一下为什么会有这么个结构,我们在第二条线中说过了文件系统注册时的file_struct_type结构体了,但这个信息还不够...,我们要正确使用一种文件系统,就必须mount到根文件系统的某个目录上去,记得要root权限哦,这个时候还是为了管理上的方便,又抽象出来一个结构体vfsmount,它存放的就是文件安装的相关信息,它和PCB...由于自己接触linux内核时间不长,才疏学浅,班门弄斧了,如果有错误的地方欢迎大家指正,小赵万分感谢:-D

1.4K30

Linux rootfs_hdfs shell命令

本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。...文章试图从一个比较高的角度来解释Linux 下的 VFS 文件系统机制。 1.摘要 本 文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。...建议读者在阅读本文前,先尝试着自己阅读一下文件系统的源代码,以便建立起 Linux下文件系统最基本的概念,比如至少应熟悉 super block, dentry, inode,vfsmount等数据结构所表示的意义...所以在每次系统初始化期间,Linux 都首先要在内存当中构造一棵VFS 的目录树(在 Linux 的源代码里称之为 namespace),实际上便是在内存中建立相应的数据结构。...在这个场景里,do_kern_mount() 做的工作主要是: 1)调用 alloc_vfsmnt() 函数在内存里申请了一块该类型的内存空间(struct vfsmount*mnt),并初始化其部分成员变量

85410
领券