虚拟文件系统和文件系统的挂载

news/2024/10/20 22:10:43

虚拟文件系统

虚拟文件系统(VFS)屏蔽了不同文件系统的差异和操作细节,向上为用户提供了文件操作的统一调用接口,如图 4.24 所示。当用户程序访问文件时,通过 VFS 提供的统一调用函数(如open()等)来操作不同文件系统的文件,而无须考虑具体的文件系统和实际的存储介质。

img

虚拟文件系统采用了面向对象的思想,它抽象出一个通用的文件系统模型,定义了通用文件系统都支持的接口。新的文件系统只要支持并实现这些接口,即可安装和使用。为了实现虚拟文件系统,系统抽象了四种对象类型。每个对象都包含数据和函数指针,这些函数指针指向操作这些数据的文件系统的实现函数。这四种对象类型如下

  • 超级块对象

    • 表示一个已安装(或称挂载)的特定文件系统。超级块对象对应于磁盘上特定扇区的文件系统超级块,用于存储已安装文件系统的元信息。其操作方法包含一系列可在超级块对象上调用的操作函数,主要有分配 inode、销毁 inode、读 inode、写 inode 等。
  • 索引节点对象

    • 表示一个特定的文件。索引节点和文件是一对一的关系。只有当文件被访问时,才在内存中创建索引节点对象,每个索引节点对象都会复制磁盘索引节点包含的一些数据。索引节点对象还提供许多操作函数,如创建新索引节点、创建硬链接、创建新目录等。
  • 目录项对象

    • 表示一个特定的目录项。目录项对象是一个路径的组成部分,它包含指向关联索引节点的指针,还包含指向父目录和指向子目录的指针。不同于前面两个对象,目录项对象在磁盘上没有对应的数据结构,而是 VES 在遍历路径的过程中,将它们逐个解析成目录项对象的。
  • 文件对象

    • 表示一个与进程相关的已打开文件。可以通过调用 open()打开一个文件,通过调用 close()关闭一个文件。文件对象和物理文件的关系类似于进程和程序的关系。文件对象仅是进程视角上代表已打开的文件,它反过来指向其索引节点。文件对象包含与该文件相关联的目录项对象,包含该文件的文件系统、文件指针等,还包含在该文件对象上的一系列操作函数。

img

img

文件系统挂载

img

如文件在使用前要打开那样,文件系统在进程使用之前必须先安装,也称挂载(Mounting)。将设备中的文件系统挂载到某个目录后,就可通过这个目录来访问设备上的文件。注意,这里的设备指的是逻辑上的设备,如一个磁盘上的不同分区都可视为不同的设备。Windows 系统维护一个扩展的两级目录结构,用驱动器字母表示设备和卷。卷具有常规树结

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

#2024-2025-1学号20241309《计算机基础与程序设计》第四周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第四周作业这个作业的目标|作业正文|2024-2025-1学号20241309《计算机基础与程序设计》第四周学习总结 教材学习内容总结 《计算机科学概论》第四章 《计算机…

对于 CF,AT,CSP-S,NOIP,我想说

尽管我是 div2 一题水平,但是

单元化架构,分布式系统的新王!

0 关键收获单元化架构通过减少故障的爆炸半径来增加系统弹性 单元化架构是那些任何停机时间都被认为是不可接受的,或者可以显著影响最终用户的系统的一个好选择 单元化架构通过强制使用固定大小的单元作为部署单元,并倾向于扩展而不是扩展的方法,增强了微服务的可伸缩性模型…

springboot3.0自动配置

目标 本文主要介绍springboot3.0是如何创建一个可以进行自动配置的jar包的 自动配置的定义是,一个jar包里面定义了一些spring的bean,当导入这个jar包的时候会自动将这些bean导入进去 方法 创建 AutoConfiguration.imports 文件 创建目录 META-INF/spring/org.springframework…

java 常见异常,及解决方案

异常体系图常见异常: 1、NullPointerException 空指针异常:访问一个空对象的属性或者方法时会出现 解决:提前进行判空处理 2、IOException IO流异常:IO,即:input, output,在读写磁盘文件、网络内容的时候经常会生的一种异常 解决:捕获 IOException 并处理或重新抛出 3、…

简单使用pyinstaller

pyinstaller介绍 PyInstaller 用于将 Python 程序打包成独立的可执行文件(EXE),以便于在没有 Python 环境的计算机上运行。 -F参数 -F 参数是 PyInstaller 的一个简写,用于生成单个可执行文件。它与 --onefile 参数的作用相同。当使用 -F 参数时,PyInstaller 会将所有依赖…

Codeforces Round 980 (Div. 2)

糖丸了,什么沟史比赛 A.Profitable Interest Rate初始有 \(a\) 个硬币,可以花费硬币开通盈利账户与非盈利账户开通盈利账户需要至少花费 \(b\) 个金币 开通非盈利账户没有限制 每在非盈利账户花费 \(x\) 元,盈利账户的限制 \(b\) 就减少 \(2x\) 元求最大的在盈利账户上的花费…