当前位置: 首页 > news >正文

1 虚拟文件系统

1.Linux 内核核心作用

Linux 内核是操作系统的核心底层程序,介于硬件和应用程序之间,是整个系统的「大管家」,核心作用分 7 大类:

1. 进程管理(任务调度)

1.负责创建、销毁、暂停、恢复进程/线程2.时间片轮转调度,让CPU同时跑多个程序3.进程优先级、抢占式调度、进程间通信(IPC

2. 内存管理

1.管理整机物理内存、虚拟内存2.实现分页、分段、内存交换(Swap3.给每个进程分配独立虚拟地址空间,隔离互不干扰4.内存回收、缓存/缓冲区管理

3. 设备驱动管理

1.对接硬件:硬盘、网卡、显卡、USB、外设等2.提供统一驱动框架,屏蔽硬件差异3.向上给应用提供标准接口,向下控制硬件寄存器

4. 文件系统管理

1.支持多种文件系统:Ext4XFSNTFSFAT322.统一虚拟文件系统VFS抽象层3.管理文件读写、权限、目录、挂载、磁盘配额

5. 网络协议栈

1.内置完整TCP/IP协议栈2.处理网卡收发包、路由、端口、套接字(Socket3.支持网桥、虚拟网卡、VPN、防火墙(Netfilter/iptables)

6. 系统调用接口

1.给上层应用提供系统调用(open/read/write/fork 等)2.应用不能直接操作硬件,必须通过内核系统调用陷入内核态执行

7. 权限与安全、资源隔离

1.用户/权限管理、UID/GID、文件权限2.支持NamespaceCgroup容器隔离(Docker底层依赖)3.系统资源限制(CPU、内存、IO配额)4.内核安全机制、地址空间随机化、权限管控

2.文件系统

2.1 什么是文件系统?

操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 通常文件系统是用于存储和组织文件的一种机制,便于对文件进行方便的查找与访问。 文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。 它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。 随着文件种类的增多,扩增了更多的文件系统,为了对各种文件系统进行统一的管理与组织。

2.2 Linux文件系统

Linux将文件系统分为了两层:VFS(虚拟文件系统)、具体文件系统,如下图所示:

VFS(Virtual Filesystem Switch)称为虚拟文件系统或虚拟文件系统转换,是一个内核软件层,在具体的文件系统之上抽象的一层,用来处理与Posix文件系统相关的所有调用,表现为能够给各种文件系统提供一个通用的接口,使上层的应用程序能够使用通用的接口访问不同文件系统,同时也为不同文件系统的通信提供了媒介。

VFS并不是一种实际的文件系统,它只存在于内存中,不存在任何外存空间,VFS在系统启动时建立,在系统关闭时消亡。

VFS由超级块、inode、dentry、vfsmount等结构来组成。

Linux系统中存在很多的文件系统,例如常见的ext2,ext3,ext4,sysfs,rootfs,proc…等等。

2.3 VFS

VFS在linux架构中的位置
从用户的使用角度,Linux下的文件系统中宏观上主要分为三层:

1.上层的文件系统的系统调用(System-call ); 2.虚拟文件系统VFS(Virtual File System)层, 3.挂载到VFS中的各种实际文件系统。

VFS在整个Linux系统中的架构视图如下:

Linux系统的User使用GLIBC(POSIX标准、GUN C运行时库)作为应用程序的运行时库,然后通过操作系统,将其转换为系统调用SCI(system-call interface),SCI是操作系统内核定义的系统调用接口,这层抽象允许用户程序的I/O操作转换为内核的接口调用。

2.3.1 用户如何透明的去处理文件?

我们知道每个文件系统是独立的,有自己的组织方法,操作方法。那么对于用户来说,不可能所有的文件系统都了解,那么怎么做到让用户透明的去处理文件呢?

例如:我想写文件,那就直接read就OK,不管你是什么文件系统,具体怎么去读!这里就需要引入虚拟文件系统。

所以虚拟文件系统就是:对于一个system,可以存在多个“实际的文件系统”,例如:ext2,ext3,fat32,ntfs…例如我现在有多个分区,对于每一个分区我们知道可以是不同的“实际文件系统”。

例如现在三个磁盘分区分别是:ext2,ext3,fat32,那么每个“实际的文件系统”的操作和数据结构肯定不一样,那么,用户怎么能透明使用它们呢?

这个时候就需要VFS作为中间一层!用户直接和VFS打交道。

VFS是一种软件机制,只存在于内存中,每次系统初始化期间Linux都会先在内存中构造一棵VFS的目录树(也就是源码中的namespace)。

VFS主要的作用是对上层应用屏蔽底层不同的调用方法,提供一套统一的调用接口,二是便于对不同的文件系统进行组织管理。

VFS提供了一个抽象层,将POSIX API接口与不同存储设备的具体接口实现进行了分离,使得底层的文件系统类型、设备类型对上层应用程序透明。

例如read,write,那么映射到VFS中就是sys_read,sys_write,那么VFS可以根据你操作的是哪个“实际文件系统”(哪个分区)来进行不同的实际的操作!这个技术也是很熟悉的“钩子结构”技术来处理的。

其实就是VFS中提供一个抽象的struct结构体,然后对于每一个具体的文件系统要把自己的字段和函数填充进去,这样就解决了异构问题(内核很多子系统都大量使用了这种机制)。

2.4 Linux虚拟文件系统四大对象

为了对文件系统进行统一的管理与组织,Linux创建了一个公共根目录和全局文件系统树。要访问一个文件系统中的文件,必须先将这个文件系统挂载在全局文件系统树的某个根目录下,这一挂载过程被称作文件系统的挂载,所挂载的目录称为挂载点

传统的文件系统在磁盘上的布局如下:

http://www.jsqmd.com/news/780573/

相关文章:

  • Instagit:为AI编程助手注入源码洞察力,告别API幻觉与过时文档
  • 本地靠谱的定制软件开发公司供应商
  • 5G波形技术革新:块滤波OFDM与同频全双工实战验证
  • ConvNeXt优化扩散模型:高效图像生成新方案
  • 破解研发数字化转型中的协同效率瓶颈
  • LLM智能体记忆优化:RL驱动的mem-agent架构解析
  • OpenClaw开源项目:AI驱动机器人灵巧手抓取技术全解析
  • WebMCP:基于MCP协议的大模型与外部工具连接实战指南
  • 语音驱动AI智能体:从Whisper到工具调用的全链路实践
  • 语音技能开发框架解析:从事件驱动到插件化实现
  • 基于RAG与智能体的长链推理知识库问答系统架构与实践
  • Arm Neoverse V3AE核心架构解析与配置优化
  • AI Agent安全工程2026:越狱攻击、提示词注入与防御体系完整指南
  • AI智能体设计智库:从结构化数据到可编程设计技能
  • 基于Hermes协议与MQTT构建开源语音技能:从架构到部署实践
  • 经过1天的时间基本得出结论------看到的2个框其实是不同时间的同一个框
  • 构建可执行技能手册:开发者知识管理的GitHub实践
  • Linux sh文件报错: cannot execute: required file not found
  • 基于MCP协议实现AFFiNE知识库与AI助手深度集成:部署与实战指南
  • Linux动画光标主题制作:从Windows光标到XCursor的自动化转换
  • dsPIC30F实现AC感应电机控制的关键技术与实践
  • 2026年4月仓储货架供应商口碑推荐,家庭库房货架/公司库房货架/智能仓储货架/高层货架,仓储货架源头厂家口碑推荐 - 品牌推荐师
  • 别再用MNIST了!用Sklearn的load_digits数据集5分钟搞定你的第一个逻辑回归分类器
  • agent使用初体验
  • 神经语音解码技术BrainWhisperer:ASR与BCI的融合创新
  • 半导体节能技术:从工艺到系统架构的全面优化
  • 音乐生成算法的统计验证与硬件补偿技术
  • IP-XACT与嵌入式系统设计自动化实践
  • 开发者技能管理平台skill-studio:架构设计与工程实践
  • C语言构建极简AI助手:88KB二进制与嵌入式部署实践