加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Linux 的假造文件体系(真正领略“统统皆文件”)

发布时间:2019-06-16 21:47:07 所属栏目:站长百科 来源:cpp软件架构狮
导读:1,弁言 Linux 中应承浩瀚差异的文件体系共存,如 ext2, ext3, vfat 等。通过行使统一套文件 I/O 体系 挪用即可对 Linux 中的恣意文件举办操纵而无需思量其地址的详细文件体系名目;更进一步,对文件的 操纵可以跨文件体系而执行。如图 1 所示,我们可以使
副问题[/!--empirenews.page--]

Linux 的假造文件体系(真正领略“统统皆文件”)

 1,弁言

Linux 中应承浩瀚差异的文件体系共存,如 ext2, ext3, vfat 等。通过行使统一套文件 I/O 体系 挪用即可对 Linux 中的恣意文件举办操纵而无需思量其地址的详细文件体系名目;更进一步,对文件的 操纵可以跨文件体系而执行。如图 1 所示,我们可以行使 cp 呼吁从 vfat 文件体系名目标硬盘拷贝数据到 ext3 文件体系名目标硬盘;而这样的操纵涉及到两个差异的文件体系。

图 1. 跨文件体系的文件操纵

Linux 的假造文件体系(真正领略“统统皆文件”)

“统统皆是文件”是 Unix/Linux 的根基哲学之一。不只平凡的文件,目次、字符装备、块装备、 套接字等在 Unix/Linux 中都是以文件被看待;它们固然范例差异,可是对其提供的却是统一套操纵界面。

图 2. 统统皆是文件

Linux 的假造文件体系(真正领略“统统皆文件”)

而假造文件体系正是实现上述两点 Linux 特征的要害地址。假造文件体系(Virtual File System, 简称 VFS), 是 Linux 内核中的一个软件层,用于给用户空间的措施提供文件体系接口;同时,它也提供了内核中的一个 抽象成果,应承差异的文件体系共存。体系中全部的文件体系不单依靠 VFS 共存,并且也依赖 VFS 协同事变。

为了可以或许支持各类现实文件体系,VFS 界说了全部文件体系都支持的根基的、观念上的接口和数据 布局;同时现实文件体系也提供 VFS 所祈望的抽象接口和数据布局,将自身的诸如文件、目次等观念在情势 上与VFS的界说保持同等。换句话说,一个现实的文件体系想要被 Linux 支持,就必需提供一个切合VFS尺度 的接口,才气与 VFS 协同事变。现实文件体系在同一的接口和数据布局下潜匿了详细的实现细节,以是在VFS 层和内核的其他部门看来,全部文件体系都是沟通的。图3表现了VFS在内核中与现实的文件体系的协同相关。

图3. VFS在内核中与其他的内核模块的协同相关

Linux 的假造文件体系(真正领略“统统皆文件”)

我们已经知道,正是因为在内核中引入了VFS,跨文件体系的文件操纵才气实现,“统统皆是文件” 的标语才气理睬。而为什么引入了VFS,就能实现这两个特征呢?在接下来,我们将以这样的一个思绪来切入

文章的正题:我们将先扼要先容下用以描写VFS模子的一些数据布局,总结出这些数据布局彼此间的相关;然后 选择两个具有代表性的文件I/O操纵sys_open()和sys_read()来具体声名内核是怎样借助VFS和详细的文件体系打 交道以实现跨文件体系的文件操纵和理睬“统统皆是文件”的标语。

2 VFS数据布局

2.1 一些根基观念

从本质上讲,文件体系黑白凡的数据分层存储布局,它包括文件、目次和相干的节制信息。为了描写 这个布局,Linux引入了一些根基观念:

文件 一组在逻辑上具有完备意义的信息项的系列。在Linux中,除了平凡文件,其他诸如目次、装备、套接字等 也以文件被看待。总之,“统统皆文件”。

目次 目次比如一个文件夹,用来容纳相干文件。由于目次可以包括子目次,以是目次是可以层层嵌套,形成 文件路径。在Linux中,目次也是以一种非凡文件被看待的,以是用于文件的操纵同样也可以用在目次上。

目次项 在一个文件路径中,路径中的每一部门都被称为目次项;如路径/home/source/helloworld.c中,目次 /, home, source和文件 helloworld.c都是一个目次项。

索引节点 用于存储文件的元数据的一个数据布局。文件的元数据,也就是文件的相干信息,和文件自己是两个差异 的观念。它包括的是诸如文件的巨细、拥有者、建设时刻、磁盘位置等和文件相干的信息。

超等块 用于存储文件体系的节制信息的数据布局。描写文件体系的状态、文件体系范例、巨细、区块数、索引节点数等,存放于磁盘的特定扇区中。

如上的几个观念在磁盘中的位置相关如图4所示。

图4. 磁盘与文件体系

Linux 的假造文件体系(真正领略“统统皆文件”)

关于文件体系的三个易夹杂的观念:

建设 以某种方法名目化磁盘的进程就是在其之上成立一个文件体系的进程。建设文现体系时,会在磁盘的特定位置写入 关于该文件体系的节制信息。

注册 向内核报到,声明本身能被内核支持。一样平常在编译内核的时侯注册;也可以加载模块的方法手动注册。注册进程实 际上是将暗示各现实文件体系的数据布局struct file_system_type 实例化。

安装 也就是我们认识的mount操纵,将文件体系插手到Linux的根文件体系的目次树布局上;这样文件体系才气被会见。

2.2 VFS数据布局

VFS依赖四个首要的数据布局和一些帮助的数据布局来描写其布局信息,这些数据布局示意得就像是工具; 每个首要工具中都包括由操纵函数表组成的操纵工具,这些操纵工具描写了内核针对这几个首要的工具可以举办的操纵。

2.2.1 超等块工具

存储一个已安装的文件体系的节制信息,代表一个已安装的文件体系;每次一个现实的文件体系被安装时, 内核会从磁盘的特定位置读取一些节制信息来添补内存中的超等块工具。一个安装实例和一个超等块工具逐一对应。 超等块通过其布局中的一个域s_type记录它所属的文件体系范例。

按照第三部门追踪源代码的必要,以下是对该超等块布局的部门相干成员域的描写,(如下同):

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读