<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux文件管理(2)》(26)

《Linux操作系统原理分析之Linux文件管理(2)》(26)

  • 8 Linux文件管理
    • 8.4 虚拟文件系统 VFS
      • 8.4.1 VFS 的工作原理
      • 8.4.2 VFS 超级块
      • 8.4.3VFS 的 inode
    • 8.5 文件系统的安装与注册
      • 8.5.2 文件系统的注册

8 Linux文件管理

8.4 虚拟文件系统 VFS

linux 支持的文件系统有;Minix 、ext2、iso、nfs、smb、msdos、romfs 等多达 20 几种。为什么能支持这么多的文件系统?因为它引进了虚拟文件转换技术 VFS。Vfs 屏蔽了各种文件系统的差异,为处理各种不同文件系统提供了统一的接口,在 vfs 的管理下,linux 能访问各种文件系统,而且实现了各种文件系统之间的互访

8.4.1 VFS 的工作原理

  1. 虚拟转换机制((VFS)
    👉物理文件系统:Linux 支持的各种文件系统:如 Minix、ext2 、iso、nfs 等被称为物理文件系统;
    👉虚拟转换机制((VFS):不同的物理文件系统有不同的组织结构和不同的处理方式,为了能处理各种不同的物理文件系统,操作系统需要把它们的特性进行抽象,把各种不同物理文件系统转换为一个具有统一共性的虚拟文件系统,这种转换机制称为虚拟文件系统转换,即 vfs 。
    VFS 不是实际的文件系统,它进程提供了处理各种物理文件系统的公共接口它进程提供了处理各种物理文件系统的公共接口。通过这个接口使得不同 通过这个接口使得不同的文件系统看来都是相同

在这里插入图片描述

  1. VFS 超级块和 VFS inode 结构
    👉VFS 超级块的作用是把在各种文件系统中的表示文件在逻辑分区中的静态分布情况转换成统一的格式。
    👉VFS inode 作用是把不同文件系统的活动文件的管理信息,如文件类型 如文件类型、文件尺寸等转换成统一格 文件尺寸等转换成统一格式式式式。
  2. 公共操作函数接口 公共操作函数接口
    当进程向系统发出文件操作请求时,该文件可能是某个物理文件系统中的一个文件,内核将通过VFS 公共操作函数接口转换到该文件系统的相应的操作函数。

在这里插入图片描述

8.4.2 VFS 超级块

VFS 超级块是在文件系统安装是由系统在内存建立的,对于每一种已安装的文件系统,在内存中都有与其对应的 VFS 超级块。各种文件系统的超级块都是一个 super_block 结构体。它里的数据是在安装时,由读超级块例程 read_super()把某种文件系统的管理信息写入它的 VFS 超级块中。
VFS 超级块主要包括以下几种信息:

1.文件系统的组织信息。如文件系统所在的设备号、块大小、块位数、文件系统署名等。设备号包括主设备号和次设备号,如/dev/hda1,设备号是
0x0301,其中 03 是主设备号,01 是次设备号。
2.文件系统的注册和安装信息。
3.超级块的属性信息,表现为超级块的各种标志,如超级块标志、锁定标志、禁写标志、修改标志等
4.VFS 超级块的前面各个成员项表示的是各种文件系统的共信息,不同文件系统的特有信息则由联-合体 u 的各个成员表示。
5.指向对超级块进行操作的函数指针。

8.4.3VFS 的 inode

VFS inode 作用是把不同文件系统的活动文件的管理信息,如文件类型、文件尺寸等转换成统一格式。
只有当前正在使用的活动文件才有 VFS inode。

8.5 文件系统的安装与注册

1.安装点
安装点:linux 文件系统的树型层次结构中用于安装其它文件系统的目录称为安装点或安装目录。
在这里插入图片描述
超级用户可以 通过下列命令来安装文件系统:

$mount –t msdos /dev/hdc /mnt/usr

Msdos:文件系统类型
/dev/hdc:文件系统所在设备
/mnt/usr:安装点
卸载文件系统命令:

$ummount dev/hdc 或$ummount /mnt/usr

2.物理文件系统链表
Linux 对 系 统 中 已 安 装 的 每 种 物 理 文 件 系 统 用 一 个 vfsmount 结 构 进 行 描 述 , 其 定 义
在/include/linux/mount.h。

8.5.2 文件系统的注册

文件系统在安装后,为了能让 linux 系统对各种物理文件进行管理,物理文件系统在安装后必须向系统内
核注册。
两种方式:
👉编译系统内核时确定可以支持哪些文件系统,在系统引导时注册
👉 系统运行中需要使用某种文件系统时进行安装并注册。

  1. 注册链表
    系统中所有已注册的文件系统登记在 file_system_type 中,组成一个链表。
struct file_system_type
{
const char *name; /*指向文件系统文件系统名*/
struct super_block *(*read_super) (struct super_block *, void *, int); /*函数指针,函数功能:在文件系统安装时,从外存读取该文件系统的有关数据写入 VFS 中。*/
int requires_dev; /*是否需要设备支持:1 需要;0 不需要*/
struct file_system_type * next; /*下一个节点*/
};

Linux 支持的各种物理文件系统的注册数据预先设置在它们各自的注册结构体中。
在这里插入图片描述

  1. 文件系统的注册
    各种文件系统的注册是通过内核提供的文件系统初始化函数实现的,如:
Init_ext2_fs();
Init_msdos_fs();

在各个文件系统初始化函数中,把文件系统的注册结构体作为参数,调用内核提供的文件注册函数register_filesystem(),把文件系统注册结构体加入到注册链表中,从而完成注册功能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS4.0从零开始的开发教程05 应用程序入口—UIAbility的使用

HarmonyOS(三)应用程序入口—UIAbility的使用 UIAbility概述 UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。 每一个UIAbility实例,…

python数据分析基础

前言 2023年10月以来,一位在商学院就读的可爱同学遇上了一门课——python数据分析,并遇到了许多问题,找上了我,就此,我也开始了学习之路,虽然很浅显,但这些东西对部门同学来说也是受用的&#…

【XILINX】ISE chipscope出现错误 Can‘t load jre bin client jvm.dll

记录一个ISE软件使用过程中遇到的问题及解决方案。 问题 ISE chipscope出现错误 Cant load jre bin client jvm.dll C:\Xilinx\14.7\ISE_DS\ISE\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt64 C:\Xilinx\14.7\ISE_DS\ISE\bin\nt6…

Weblogic CVE-2023-21839(metasploit版)

Step1:用docker搭建环境 Step2:docker查看映射端口 Step3:访问特定端口,然后靶标应用。 Step4:用metasploit进行攻击: 首先,打开metasploit,然后查询需要攻击的板块&#xff0…

【恶意刷券】电商中恶意刷券如何防止?

好的,更详细一些的解释如下: 1. **验证码验证** 验证码验证是防范恶意刷券的最基本手段之一。通过在关键操作前引入验证码,可以让机器无法进行自动化操作,只有真实用户才能完成验证。验证码种类包括文字、图片、计算等多种形式&…

C# 未处理System.InvalidOperationException HResult=-2146233079

1.异常信息: 未处理System.InvalidOperationException HResult-2146233079 MessageThe custom trace listener custom listener does not have a listener type name set or the type is invalid (F:\CBCT64\Output\Polaris.exe.Config line 45). SourceMicr…

[实践总结] 使用Apache HttpClient 4.x进行进行一次Http请求

使用Apache HttpClient 4.x进行进行一次Http请求 依赖 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactI…

相位解包裹算法的研究现状和存在的问题

位相解包裹算法的研究现状 Phase unwrapping中文译法有&#xff1a;位相展开&#xff0c;位相解包寝&#xff0c;位相解缠绕等。因为数字全总术的重要步骤就是进行位相解包裹&#xff0c;所以伴随着数字全息显微术的发展&#xff0c;就对位相解包裹算法提出了更高的要求&#x…

华为OD机试 - 机场航班调度程序(Java JS Python C)

题目描述 XX市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。 但是XX市机场只有一条起飞跑道,调度人员需要安排目前停留在机场的航班有序起飞。 为保障航班的有序…

Python:核心知识点整理大全4-笔记

目录 2.6 Python 之禅 2.7 小结 3.1 列表是什么 3.1.1 访问列表元素 3.1.2 索引从 0 而不是 1 开始 3.1.3 使用列表中的各个值 3.2 修改、添加和删除元素 3.2.1 修改列表元素 3.2.2 在列表中添加元素 2. 在列表中插入元素 1. 使用del语句删除元素 1 处的代码使用del…

指定分隔符对字符串进行分割 numpy.char.split()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 指定分隔符对字符串进行分割 numpy.char.split() 选择题 请问下列程序运行的的结果是&#xff1a; import numpy as np print("【执行】np.char.split(I.Love.China, sep .)") p…

【Flink on k8s】- 11 - 使用 Flink kubernetes operator 运行 Flink 作业

目录 1、创建本地镜像库 1.1 拉取私人仓库镜像 1.2 运行 1.3 本地浏览器访问 5000 端口

Linux进程解析(冯诺依曼体系结构,操作系统,进程初步解析)

冯诺依曼体系结构&#xff1a; 我们常见的计算机&#xff0c;如笔记本。我们常见的计算机&#xff0c;服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成&#xff1a; 中央处理器(CPU)&am…

Linux socket编程(12):Unix套接字之socketpair、sendmsg和recvmsg详解

在上一篇文章Unix套接字编程及通信例子中&#xff0c;我们对Unix套接字编程有一个基本的了解。但在Unix套接字编程的领域中&#xff0c;有一组特殊而强大的工具&#xff1a;socketpair、sendmsg 和 recvmsg&#xff0c;它们为实现本地进程间通信提供了便捷的方式。 文章目录 1 …

Pandas 打开有密码的Excel

安装包 pip isntall msoffcrypto-tool msoffcrypto库的简单介绍 msoffcrypto提供了对Microsoft Office文件进行加密和解密的功能。它支持对Word、Excel和PowerPoint文件进行加密和解密操作。 msoffcrypto的原理是利用Microsoft Office文件的加密算法对文件进行加密和解密。它能…

绝地求生:NH究极天命圈惊险吃鸡,17斩获单日积分第一,4AM梦游暂居倒数

绝地求生PGC小组赛B组第一轮的比赛即将结束&#xff0c;在刚刚那场决赛圈中NH和17给我们上演了非常精彩的较量&#xff0c;双方战至最后一人&#xff0c;最终由NH击败17收获一鸡&#xff0c;这两支PCL老牌强队总分都超过了40分&#xff0c;晋级胜者组对他们来说压力不大了。新队…

【FPGA图像处理实战】- FPGA图像处理仿真测试工程(读写BMP图片)

FPGA开发过程中“行为功能仿真”是非常必要的一个过程&#xff0c;如果仿真都没通过&#xff0c;则上板测试必定失败。 FPGA图像处理需要读写大量的图像数据&#xff0c;单看这些图像数据实际是没有规则的&#xff0c;如果直接上板测试&#xff0c;调试起来非常困难&#xff0…

看图学源码之— HashMap源码分析

简介&#xff1a; 是基于 哈希表 实现的&#xff0c;存放 k-v 键值对&#xff0c;非同步的方式&#xff08;未加 synchronized &#xff09;非线程安全的&#xff0c;hashmap 无序的数据结构&#xff1a; 数组 链表 > 数组 链表 红黑树「链表 和 链表 红黑树 都是为了解…

vue中字典的使用

1.引入字典 dicts: [order_status,product_type],2.表单中使用 select下拉 <el-form-item label"订单状态" prop"orderStatus"><el-select v-model"form.orderStatus" clearable placeholder"请输入订单状态" :disabled"…

新版Win10通过netplwiz设置自动登录时找不到“要使用本计算机,用户必须输入用户名和密码”选项的解决方法

众所周知&#xff0c;Windows系统有个传统艺能&#xff0c;就是通过“netplwiz”或者“control userpasswords2”设置免密码自动登录。前段时间在调整一台虚拟机的配置时&#xff0c;突然惊奇的发现&#xff0c;在设置免密码登录的时候居然找不到需要去掉勾选的复选框了。如下图…