<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数据分析,并遇到了许多问题,找上了我,就此,我也开始了学习之路,虽然很浅显,但这些东西对部门同学来说也是受用的&#…

Weblogic CVE-2023-21839(metasploit版)

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

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

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

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

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

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

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

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

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

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

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

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

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

QT+Unity3D 超详细(将unity3D与QT进行连接,并实现信息传递)

QTUnity3D连接 在QT中连接unity3D,首先要有一个unity.exe执行文件。在这里不提供unity执行文件的编写,只提供QT这边与unity3D连接和信息传递。 创建项目 创建一个新的项目,我创建的项目名称如下。 下图是我建立新项目的文件。APP文件就是…

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

《Linux操作系统原理分析之Linux文件管理(1)》(25) 8 Linux文件管理8.1 Linux 文件系统概述8.2 EXT2 文件系统8.2.1 EXT2 文件系统的构造8.2.2 EXT2 超级块(super block)8.2.3 组描述符8.2.4 块位图 8.3 EX…

智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社交网络算法4.实验参数设定5.算法结果6.参考…

用23种设计模式打造一个cocos creator的游戏框架----(七)代理模式

1、模式标准 模式名称:代理模式 模式分类:结构型 模式意图:为其他对象提供一种代理以控制对这个对象的访问。 结构图: ​ 适用于: 远程代理:也称为大使,这是最常见的类型,在分…

2022年第十一届数学建模国际赛小美赛C题人类活动分类解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛 C题 人类活动分类 原题再现: 人类行为理解的一个重要方面是对日常活动的识别和监控。可穿戴式活动识别系统可以改善许多关键领域的生活质量,如动态监测、家庭康复和跌倒检测。基于惯性传感器的活动识别系统用于通过…

Kubernetes入门笔记——(2)k8s设计文档

​k8s最初源自谷歌的Brog项目,架构与其类似,主要包括etcd、api server、controller manager、scheduler、kubelet和kube-proxy等组件 etcd:分布式存储,保存k8s集群的状态 api server:资源操作的唯一入口,…

Kafka 的消息格式:了解消息结构与序列化

Kafka 作为一款高性能的消息中间件系统,其消息格式对于消息的生产、传输和消费起着至关重要的作用。本篇博客将深入讨论 Kafka 的消息格式,包括消息的结构、序列化与反序列化,以及一些常用的消息格式选项。通过更丰富的示例代码和深入的解析&…

2023年山东省职业院校技能大赛信息安全管理与评估二三阶段样题

2023年山东省职业院校技能大赛信息安全管理与评估二三阶段 样题 第二阶段 模块二 网络安全事件响应、数字取证调查、应用程序安全 一、竞赛内容 Geek极安云科专注技能竞赛技术提升,基于各大赛项提供全面的系统性培训,拥有完整的培训体系。团队拥有曾…

docker部署elasticsearch8.x

docker部署elasticsearch8.x 提示1 注意版本差别1.1 docker修改配置1.1.2 docker使用vim报命令不存在的解决办法1.1.3 docker 容器内报错 E: List directory /var/lib/apt/lists/partial is missing. - Acquire ( : No such file or directory) 或者其他权限 PermissionError: …

【Delphi】一个函数实现ios,android震动功能 Vibrate(包括3D Touch 中 Peek 震动等)

一、前言 我们在开发移动端APP的时候,有时可能需要APP能够提供震动功能,以便提醒操作者,特别是ios提供的3D Touch触感功能,操作者操作时会有触感震动,给操作者的感觉很友好。那么,在Delphi的移动端FMX开发中…

团建策划信息展示服务预约小程序效果如何

团建是中大型企业商家每年举办的员工活动,其形式多样化、具备全部参与的娱乐性。但在实际策划流程及内容时,部分公司便会难以入手,术业有专攻,这个时候团建策划公司便会发挥效果。 如拓展训练、露营、运动会、体育竞技等往往更具…