linux的虚拟文件系统

一文细说Linux虚拟文件系统原理 为了实现 一切对象皆是文件 这个目标,Linux 内核提供了一个中间层:虚拟文件系统(Virtual File System)。如果大家使用过面向对象编程语言(如C++/Java等)的话,应该对 接口 这个概念并不陌生。而虚拟文件系统类似于面向对象中的接口,定义了一套标准的接口。开发者只需要实现这套接口,即可以使用操作文件的接口来操作对象。如下图所示:上图中的蓝色部分就是虚拟文件系统所在位置。从上图可以看出,虚拟文件系统为上层应用提供了统一的接口。 阅读详情
from: http://personal.denison.edu/~bressoud/cs372-f05/geekos_project/fsproject.html

Figure 10.1. Overview of the Virtual Filesystem (VFS)

Overview of the Virtual Filesystem (VFS)

The VFS layer works by dispatching requests for filesystem operations (such as opening, reading, or writing a file) to the appropriate filesystem implementation. The VFS works by defining several abstract datatypes representing mounted filesystem instances, open files, and open directories. Each of these datatypes contains a virtual function table which contains pointers to functions in the filesystem that the object belongs to. For example, File objects created by the GOSFS filesystem have a virtual function table whose Read() entry points to the function GOSFS_Read().

To give you an idea of how VFS works, here is what happens when a user process reads data from an open file in a GOSFS filesystem.

  1. The process calls the Read() in the C library, which generates a software interrupts to notify the kernel that a system call is requested. It passes a file descriptor identifying the open file, the address of the buffer to store the data read from the file, and the number of bytes requested.

  2. The kernel calls the Sys_Read() system call handler function. This function will look at the process's open file list (in User_Context) to find the File object representing the open file. It will also need to allocate a kernel buffer to temporarily hold the data read from the file. It will then call the kernel VFS function Read().

  3. The VFS Read() will find the address of the Read function in the file's virtual function table. Because the file is part of a GOSFS filesystem, this will resolve to the GOSFS_Read() function.

  4. GOSFS_Read() will do whatever work is necessary to read the requested data from the file, at the current file position, copying the data into the kernel buffer created by Sys_Read().

  5. When control returns to Sys_Read(), it will copy the data read from the kernel buffer to the user buffer (using the Copy_To_User() function), and destroy the kernel buffer.

  6. Finally, Sys_Read() will return, and the process will resume execution.

Linux 操作系统原理 — 文件系统 — 虚拟文件系统 目录 文章目录目录Linux 文件系统目录结构文件系统类型虚拟文件系统文件类型 Linux 文件系统 文件系统是文件存放在磁盘等存储设备上的组织方法。Linux 系统中每个分区都是一个文件系统,都有自己的目录层次结构。Linux 会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。一个操作系统的运行离不开对文件的操作,因此必然要拥有并维护自己的文件系统。 目录结构 和... 阅读详情

相关推荐

避坑指南:Unity与Visual Studio开发环境配置中的5个常见问题及解决方案

本文针对Unity与Visual Studio开发环境配置中的5个常见问题,提供了详细的解决方案。重点解决了项目文件生成失败导致命名空间无法识别、调试器无法附加、包管理器与扩展安装混乱、脚本编译错误以及多版本环境冲突等核心痛点,帮助开发者构建稳定高效的开发调试环境。

weixin_27791839的博客 281

Linux命令参数重映射,[Linux] VFIO

VFIO - "Virtual Function I/O"许多硬件平台提供DMA和中断重映射功能,以确保I/O设备只在分配给它们的域内访问内存,一般这样的硬件单元称为IOMMU。VFIO驱动程序是一个与IOMMU具体硬件无关的框架,可以支持x86架构的VT-D、AMD-Vi,POWER PE,ARM等各种IOMMU硬件架构。使用VFIO可以实现安全的,非特权的,用户空间驱动程序。相较于VFIO,用...

weixin_39621870的博客 759

蓝牙6.0的‘新雷达’:Channel Sounding信道探测,真能比UWB更香吗?

本文探讨了蓝牙6.0的Channel Sounding信道探测技术在室内定位领域的应用潜力。通过与UWB技术的对比分析,揭示了其在成本、功耗和兼容性方面的优势,特别是在智能门锁、物品追踪等场景中的商业价值。Channel Sounding技术不仅具备亚米级精度,还能通过现有蓝牙设备实现零边际成本部署,为物联网应用提供了新的解决方案。

weixin_29288313的博客 333

Linux虚拟文件系统

虚拟文件系统又称虚拟文件系统转换(Virual Filesystem Switch ,简称 VFS)。说它虚拟,是因为它所有的数据结构都是在运行以后才建立,并在卸载时删除,而在磁盘上并没有存储这些数据结构。如果只有 VFS,系统是无法工作的,因为它的这些数据结构不能凭空而来,只有与实际的文件系统,如 Ext2、Minix、MSDOS、VFAT 等相结合,才能开始工作,所以 VFS 并不是一个真正的文件系统。与 VFS 相对应,我们称 Ext2、Minix、MSDOS 等为具体文件系统。

qq_28576837的博客 1082

信创那些事儿——Spring Boot中集成东方通中间件(TongWeb)

在Spring Boot中集成东方通中间件(如TongWeb作为Servlet容器)通常涉及几个步骤,但需要注意的是,TongWeb本身是一个独立的Java EE应用服务器,而不是像Tomcat那样可以直接嵌入到Spring Boot应用中的中间件。因此,集成通常意味着将Spring Boot应用打包为WAR文件并部署到TongWeb服务器上。

来北欧写代码 6491

小红书高时效推荐系统背后的技术升级

在小红书 APP 中,推荐系统的实效性对推荐效果有着特别重要的影响,特别是作为 UGC 平台,小红书的推荐系统如果能更快地捕捉用户与笔记之间的变化和联系,就能够给推荐带来更好的效果。在2021年上半年,首页推荐的召回、粗排、精排的主要模块都保持在天级更新的状态,我们通过持续迭代,将召回 CF 渠道、召回索引更新、召回模型/粗精排模型的训练都做到了分钟级更新,为首页推荐的分发效率带来飞跃式提升,并给业务侧带来非常显著的收益。 小红书站内“最近一天内发布的新笔记”在首页的曝光占比一直很高,这段时间更是快速

REDtech_1024的博客 3523

【Linux】Linux虚拟文件系统VFS

在Linux中,所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录(Windows下称为文件夹)是文件,硬件设备(键盘、监视器、硬盘、打印机等)都是文件,就连套接字(socket)、网络通信等资源也都是文件。Linux为应用程序访问文件提供了统一的接口,如read、write、open等,也称为虚拟文件系统(VFS,Virtual File System)。

morris 3万+

S4 Hana SD -信贷管理 - 02

在S4版本中,客户的信用管理数据在事务代码BP维护,业务伙伴角色是UKM000。在维护过程中,我们并不能直接输入信贷控制范围这个组织架构,而是需要输入一个信用段,并且在信用段的维度下去维护相应信用管理数据。对于信用段,可以分为主信用段(信用段是0000)和其他临时信用段,我们可以通过配置把次级信用段的客户信贷负债汇总到主信用段。当然,在后台也有配置,会把信用段和信贷控制范围这两者进行关联.3.2SPROIMG > 财务供应链管理 > 信用管理 > 信贷风险监视 > 主数据 > 创建信用段。

weixin_46525734的博客 1966

linux虚拟文件系统

小前言 开写之前,插个题外话。内核相关内容写了几篇文章了,每篇文章篇幅都不少,特别是贴了不少代码,因为要看内核的具体实现,源码是必不可少的。为了方便阅读源码,添加了部分中文注释,也保留了原来的的英文注释,所以篇幅比较长。写这一段话,希望保持住啃内核的热情,不要轻易放弃。 进入正题。在linux操作系统当中,一切皆是文件,除了通所说狭义的文件(文本文件和二进制文件)以外,目录、套接字、设备及管道等都是文件。为了处理与文件系统相关的所有调用,表现为能够给各种文件系统提供一个通用的接口,使上层的应用程序能够使用通

m0_65931372的博客 2013

带隙基准电路设计实战:从HSPICE仿真到Virtuoso版图全流程解析

在模拟集成电路设计中,基准电压源是确保系统精度与稳定性的核心模块。其基本原理在于巧妙结合具有正、负温度系数的电压,通过加权求和实现近似零温度系数的稳定输出,这一特性对于高精度数据转换器、电源管理芯片等至关重要。从工程实践角度,利用HSPICE进行深入的直流工作点、温度扫描和工艺角仿真,是验证电路性能、优化温度系数和电源抑制比的关键步骤。而借助Cadence Virtuoso进行版图实现时,必须重点关注电阻与BJT的匹配布局、敏感节点的保护以及电源完整性设计,以确保设计意图在硅片上得以准确呈现。通过完整的从前

weixin_29181861的博客 287

基于Linux的PCIe设备驱动开发入门到精通-- 11.2 锁机制与并发控制 (自旋锁、互斥锁) 11.3 性能瓶颈分析与优化建议

本文探讨Linux驱动开发中的性能优化方法论,重点聚焦并发控制与性能瓶颈分析。从锁机制选择(自旋锁、互斥锁等)到工具使用(ftrace、perf),详细介绍了定位锁竞争和CPU热点的实战步骤,包括ftrace事件跟踪和perf火焰图分析。针对常见性能瓶颈(CPU/内存/I/O/锁竞争),提出了锁粒度优化、无锁结构替换、中断处理优化等解决方案。强调性能优化需要理论结合实践,通过"假设-测量-验证"的循环持续迭代。为开发者提供了一套从问题定位到解决的完整方法论,助力开发高性能工业级驱动。

MHD0815的博客 129

Linux内核——虚拟文件系统

因为要为不同类型的文件系统定义统一的接口层,所以 VFS 定义了一系列的规范,真实的文件系统必现按照 VFS 的规范来编写程序。是 VFS 中最为重要的一个结构,用于描述一个文件的meta(元)信息,其包含的是诸如文件的大小、拥有者、创建时间、磁盘位置等和文件相关的信息,所有文件都有一个对应的。Linux为了支持不同的文件系统而创造了虚拟文件系统,虚拟文件系统更像一个规范(或者说接口),真实的文件系统需要实现虚拟文件系统的规范(接口)才能接入到Linux内核中。成功读取超级块信息后,会把根目录的。

m0_74282605的博客 1193

Pyinstaller打包为可执行文件编码错误的问题

Pyinstaller打包为可执行文件编码错误的问题 写好的python程序在vscode上运行没有任何问题,将程序利用pyinstaller打包后,运行程序发生了错误。 错误代码 UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 20-21:invalid cotinuation byte 网上找到的解决方案是: 1.在命令行中输入 chcp 65001 2.按正常方式进行封装 pyinstaller

xuefeng_he的博客 1559

【Linux】文件系统、文件系统结构、虚拟文件系统

一、文件系统概述一、文件系统概述文件系统(File System)是一种用于在计算机存储设备上组织和管理文件和数据的方式。它提供了一种结构化的方法,使得计算机可以有效地存储、检索和管理文件。文件系统通过文件和目录的组织结构来管理数据。文件表示存储在设备上的数据单元,而目录用于组织和存储文件。文件系统定义了文件的命名规则,这包括文件名的长度、允许使用的字符类型等。文件名通常用于唯一标识文件。文件系统负责将文件存储在物理存储设备(如硬盘、固态硬盘、光盘等)上,并提供检索文件的机制。

咖喱年糕的博客 4026

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Linux虚拟文件系统管理技术

Linux包含一个通用的、强有力的文件处理机制,该机制利用虚拟文件系统(Virtual File System,VFS)来支持大量的文件管理系统和文件结构。VFS向用户进程提供了一个简单的,统一的文件系统接口。VFS定义了一个能代表任何可想到的文件系统的通用特征和行为的通用文件模型。VFS认为文件是计算机大容量存储器上的对象。这些计算机大容量存储器具有共同的特征,这与目标文件系统或底层的处理器硬件无关。

李姓门徒 1571

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux文件系统,虚拟文件系统,linux内核结构

文章目录一、文件系统1、文件系统概述文件系统种类什么是分区简单理解windows和linux文件系统的区别2、文件系统结构/etc目录下可以设置开机启动程序/proc目录举例二、虚拟文件系统1、定义2、有什么作用?3、cp指令的实现4、从系统编程,从上层到底层来看Linux内核结构1、Linux内核结构框图2、图解linux系统架构3、shellshell脚本 一、文件系统 1、文件系统概述 学术定义:文件系统是操作系统用于明确存储设备的文件和数据结构,即在存储设备上组织文件的方法。 常规认知:根目录 cd

m0_52986396的博客 937

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

图解Linux虚拟文件系统(VFS)之关系篇

Linux虚拟文件系统(Virtual File System,VFS)是Linux操作系统中的一个重要组成部分,它提供了一个统一的接口,使得用户和应用程序可以通过相同的方式访问不同类型的文件系统。VFS的设计目标是将不同类型的文件系统抽象为一个统一的接口,使得用户和应用程序无需关心底层文件系统的具体实现细节。

weixin_28673511的博客 2672

Linux 常见的虚拟文件系统

dev目录是 Linux 系统中一个非常重要的虚拟文件系统,它包含了与硬件设备及内核驱动相关的“设备文件”。这些设备文件并不存储数据,而是内核为每个硬件设备(如磁盘、终端、网络接口等)提供的访问接口。用户和程序通过这些设备文件与硬件设备进行交互。字符设备:例如终端(tty)、串口(serial ports)、鼠标、键盘等,数据是逐字符流处理的。块设备:例如硬盘(/dev/sda)、光驱(/dev/cdrom)、U盘(/dev/sdb)等,数据是按块处理的。/dev/tcp。

vortex5的博客 1074

【Linux】文件系统、文件结构、虚拟化文件系统

1.什么是文件系统;2.文件系统种类;3.什么是分区;4.文件系统目录结构;5.文件系统结构;6.文件类型;7.文件名规则;8.绝对路径与相对路径;9.虚拟文件系统概念;10.VFS作用;

v13111329954的博客 1232

Linux vfs 虚拟文件系统解读

本文解析Linux VFS虚拟文件系统的核心架构与实现机制。首先介绍了VFS的三种文件系统分类:基于存储设备、虚拟和网络文件系统,并阐述了通用文件模型的概念。重点剖析了VFS的目录结构,包括异步I/O、文件属性、块设备操作等核心模块,以及ext4、fat、proc等具体文件系统实现。通过分析super_block、inode、dentry、file等关键数据结构,揭示了VFS的对象模型和生命周期管理机制。文章还通过overlayfs的注册实例,展示了文件系统类型的具体实现方式,为理解用户空间与内核空间的交互

Y_YG 820

linux文件系统、文件系统结构、虚拟文件系统

文件系统是操作系统用于明确存储设备的文件和数据结构,即在存储设备上组织文件的方法。根分区/根目录windows对于分区的管理较为“随意”,因为其面向普通PC用户。C,D盘随意存放文件。而linux较为严格,按照功能来分区,大多面向开发者。bootloader:启动代码para:启动代码向内核传递参数的位置kernel内核分区(前面内核编译时SD卡映射的data1)根分区/根目录:文件系统结构(前面内核编译时SD卡映射的data2)

番茄的博客 288

Linux文件系统及虚拟文件系统认知

一、什么是文件系统 常规认知: 根目录 文件系统是操作系统用于明确存储设备组织文件的方法。 以上说的方法:就是文件管理系统(程序),简称文件系统 二、文件系统(文件管理系统的方法)的种类有哪些? FAT VFAT NTFS EXT1/2/3/4 HFS … 树莓派查看文件系统的命令: df -T vfat : boot(bootloader, kernel) ext4 : 根目录 tmpfs : 内存文件系统 三、什么是分区 windows: 随意(面向普通用户PC),目录即分区 C(装系统的位置)

weixin_47051320的博客 180

linux虚拟文件系统浅析

虚拟文件系统(VFS) 在我看来, "虚拟"二字主要有两层含义: 1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口; 2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(namespace)"来描述的, 不同的进程可能拥有不同的namespace, 不同的namespace可能有着不

ctthuangcheng 2644

Linux虚拟文件系统(1)

虚拟文件系统(VFS)是Linux内核的一个子系统,它为应用程序提供了一个统一的文件系统接口,使得不同的文件系统可以在同一操作系统中共存,并且应用程序无需了解底层文件系统的具体实现细节。VFS的核心特点包括作为抽象层、提供通用接口以及支持多种文件系统类型。VFS通过四个主要对象实现其功能:超级块(super_block)、索引节点(inode)、目录项(dentry)和文件对象(file)。超级块包含文件系统的元数据信息,索引节点则代表文件系统中的文件或目录,包含操作文件所需的全部信息。VFS通过这些对象和

weixin_39775340的博客 1038
上一篇: 轻松面试找到理想员工-非官方的面试技术指南
下一篇: callback机制
lphpc
博客等级 码龄22年 32粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值