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

1 虚拟文件系统

1.Linux 内核核心作用Linux 内核是操作系统的核心底层程序介于硬件和应用程序之间是整个系统的「大管家」核心作用分 7 大类1. 进程管理任务调度1.负责创建、销毁、暂停、恢复进程/线程2.时间片轮转调度让CPU同时跑多个程序3.进程优先级、抢占式调度、进程间通信IPC2. 内存管理1.管理整机物理内存、虚拟内存2.实现分页、分段、内存交换Swap3.给每个进程分配独立虚拟地址空间隔离互不干扰4.内存回收、缓存/缓冲区管理3. 设备驱动管理1.对接硬件硬盘、网卡、显卡、USB、外设等2.提供统一驱动框架屏蔽硬件差异3.向上给应用提供标准接口向下控制硬件寄存器4. 文件系统管理1.支持多种文件系统Ext4、XFS、NTFS、FAT32等2.统一虚拟文件系统VFS抽象层3.管理文件读写、权限、目录、挂载、磁盘配额5. 网络协议栈1.内置完整TCP/IP协议栈2.处理网卡收发包、路由、端口、套接字Socket3.支持网桥、虚拟网卡、VPN、防火墙Netfilter/iptables6. 系统调用接口1.给上层应用提供系统调用open/read/write/fork 等2.应用不能直接操作硬件必须通过内核系统调用陷入内核态执行7. 权限与安全、资源隔离1.用户/权限管理、UID/GID、文件权限2.支持Namespace、Cgroup容器隔离Docker底层依赖3.系统资源限制CPU、内存、IO配额4.内核安全机制、地址空间随机化、权限管控2.文件系统2.1 什么是文件系统操作系统中负责管理和存储文件信息的软件机构称为文件管理系统简称文件系统。 通常文件系统是用于存储和组织文件的一种机制便于对文件进行方便的查找与访问。 文件系统是对文件存储设备的空间进行组织和分配负责文件存储并对存入的文件进行保护和检索的系统。 它负责为用户建立文件存入、读出、修改、转储文件控制文件的存取当用户不再使用时撤销文件等。 随着文件种类的增多扩增了更多的文件系统为了对各种文件系统进行统一的管理与组织。2.2 Linux文件系统Linux将文件系统分为了两层VFS虚拟文件系统、具体文件系统如下图所示VFSVirtual Filesystem Switch称为虚拟文件系统或虚拟文件系统转换是一个内核软件层在具体的文件系统之上抽象的一层用来处理与Posix文件系统相关的所有调用表现为能够给各种文件系统提供一个通用的接口使上层的应用程序能够使用通用的接口访问不同文件系统同时也为不同文件系统的通信提供了媒介。VFS并不是一种实际的文件系统它只存在于内存中不存在任何外存空间VFS在系统启动时建立在系统关闭时消亡。VFS由超级块、inode、dentry、vfsmount等结构来组成。Linux系统中存在很多的文件系统例如常见的ext2,ext3,ext4,sysfs,rootfs,proc…等等。2.3 VFSVFS在linux架构中的位置从用户的使用角度Linux下的文件系统中宏观上主要分为三层1.上层的文件系统的系统调用System-call 2.虚拟文件系统VFS(Virtual File System)层 3.挂载到VFS中的各种实际文件系统。VFS在整个Linux系统中的架构视图如下Linux系统的User使用GLIBCPOSIX标准、GUN C运行时库作为应用程序的运行时库然后通过操作系统将其转换为系统调用SCIsystem-call interfaceSCI是操作系统内核定义的系统调用接口这层抽象允许用户程序的I/O操作转换为内核的接口调用。2.3.1 用户如何透明的去处理文件我们知道每个文件系统是独立的有自己的组织方法操作方法。那么对于用户来说不可能所有的文件系统都了解那么怎么做到让用户透明的去处理文件呢例如我想写文件那就直接read就OK不管你是什么文件系统具体怎么去读这里就需要引入虚拟文件系统。所以虚拟文件系统就是对于一个system可以存在多个“实际的文件系统”例如ext2ext3fat32ntfs…例如我现在有多个分区对于每一个分区我们知道可以是不同的“实际文件系统”。例如现在三个磁盘分区分别是ext2ext3fat32那么每个“实际的文件系统”的操作和数据结构肯定不一样那么用户怎么能透明使用它们呢这个时候就需要VFS作为中间一层用户直接和VFS打交道。VFS是一种软件机制只存在于内存中每次系统初始化期间Linux都会先在内存中构造一棵VFS的目录树也就是源码中的namespace。VFS主要的作用是对上层应用屏蔽底层不同的调用方法提供一套统一的调用接口二是便于对不同的文件系统进行组织管理。VFS提供了一个抽象层将POSIX API接口与不同存储设备的具体接口实现进行了分离使得底层的文件系统类型、设备类型对上层应用程序透明。例如readwrite那么映射到VFS中就是sys_readsys_write那么VFS可以根据你操作的是哪个“实际文件系统”(哪个分区)来进行不同的实际的操作这个技术也是很熟悉的“钩子结构”技术来处理的。其实就是VFS中提供一个抽象的struct结构体然后对于每一个具体的文件系统要把自己的字段和函数填充进去这样就解决了异构问题内核很多子系统都大量使用了这种机制。2.4 Linux虚拟文件系统四大对象为了对文件系统进行统一的管理与组织Linux创建了一个公共根目录和全局文件系统树。要访问一个文件系统中的文件必须先将这个文件系统挂载在全局文件系统树的某个根目录下这一挂载过程被称作文件系统的挂载所挂载的目录称为挂载点。传统的文件系统在磁盘上的布局如下

相关文章:

1 虚拟文件系统

1.Linux 内核核心作用 Linux 内核是操作系统的核心底层程序,介于硬件和应用程序之间,是整个系统的「大管家」,核心作用分 7 大类: 1. 进程管理(任务调度) 1.负责创建、销毁、暂停、恢复进程 / 线程 2.时间片…...

工程师如何讲好技术故事:从设计案例到个人品牌构建

1. 从“设计故事换iPad”看工程师的软实力营销前几天翻看一些老资料,偶然又看到了EE Times在2011年刊登的这篇小短文,标题挺有意思,叫“用设计故事换一台iPad?”。内容很简单,讲的是当时一家叫AWR(现在已被…...

2026年程序员破局之路:转智能体开发,不用卷算法也能拿高薪

文章目录前言2026年的程序员圈,一半是海水一半是火焰一边是地狱:只会CRUD的程序员,正在被时代无情抛弃一边是天堂:智能体开发岗位,正在疯狂撒钱抢人别被劝退了!智能体开发,根本不用死磕算法八股…...

基于MCP协议实现私有部署Azure DevOps与AI编程助手的安全集成

1. 项目概述:当本地开发遇上云端智能最近在折腾一个挺有意思的玩意儿,叫burcusipahioglu/azure-devops-mcp-onprem。乍一看这名字,又是 Azure DevOps,又是 MCP,还带个 on-prem,感觉有点绕。简单来说&#x…...

别再卷传统开发了!程序员转大模型,薪资直接翻2倍的真实路径

文章目录前言一、2026年,传统开发的内卷已经走到了死胡同1.1 35岁危机提前到30岁,CRUD正在被AI批量替代1.2 面试的灵魂拷问,正在击碎传统开发的薪资幻想1.3 传统开发的薪资天花板,正在被大模型狠狠砸穿二、别被忽悠了!…...

基于Reveal.js的Markdown幻灯片工具:技术分享与文档演示的高效解决方案

1. 项目概述:一个将Markdown转换为精美幻灯片的工具如果你经常需要在技术分享、产品演示或者教学培训中制作幻灯片,那么你一定对在PPT、Keynote或者Google Slides里反复调整格式、对齐文本框、设置动画感到厌倦。尤其是当你的内容主体是技术文档、代码示…...

清华AlignBench:首个中文大模型对齐评测基准深度解析与实战指南

1. 项目概述:为什么我们需要一个中文对齐评测基准?如果你最近在关注大语言模型(LLM)的发展,尤其是中文模型,可能会发现一个现象:各家厂商都在宣传自己的模型“能力强大”、“理解深刻”、“逻辑…...

Arm DynamIQ CTI寄存器架构与多核调试实践

1. Arm DynamIQ Shared Unit-110 CTI寄存器架构解析在Arm CoreSight调试架构中,交叉触发接口(CTI)扮演着关键角色。作为DynamIQ共享单元-110的重要组成部分,CTI通过硬件级的事件触发机制,实现了多核处理器间的高效调试协同。CTI的核心功能由一…...

5G波形技术革新:块滤波OFDM与同频全双工实战验证

1. 项目概述:一次面向未来的5G波形技术实地验证2017年初,当全球通信产业还在为5G的最终标准争论不休时,法国格勒诺布尔的CEA-Leti研究所已经准备将他们的研究成果从实验室推向真实的天空。这不仅仅是一次普通的“外场测试”,而是一…...

使用Taotoken CLI工具一键配置多开发环境下的AI助手接入

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken CLI工具一键配置多开发环境下的AI助手接入 对于需要在不同项目、不同机器上工作的开发者而言,为每个AI助…...

多模态AI框架MMClaw:从编码融合到实战部署全解析

1. 项目概述:一个面向多模态内容理解的“机械爪” 最近在折腾一些多模态项目时,发现一个挺有意思的仓库,叫 leadersboat/MMClaw 。光看名字, MM 大概率指的是 Multimodal(多模态) ,而 Cl…...

AI智能体配置管理:从硬编码到声明式配置的工程实践

1. 项目概述:一个为AI智能体“立规矩”的配置库如果你最近也在折腾AI智能体(Agent),特别是用LangChain、AutoGPT这类框架来构建自己的自动化助手,那你大概率会遇到一个共同的烦恼:配置太散了,管…...

Go跨平台获取光标所在显示器索引:displayindex库实战指南

1. 项目概述与核心价值在开发跨平台的桌面应用时,我们常常会遇到一个看似简单却颇为棘手的问题:如何准确判断用户的鼠标光标当前位于哪一个物理显示器上?无论是开发一个需要根据光标位置动态调整UI布局的编辑器,还是一个在多显示器…...

14.凌晨三点的月光

凌晨三点十七分,陈远从代码的深海中浮出水面。他保存文件,运行测试。绿色的进度条在屏幕上平稳推进,一个接一个的测试用例通过,像一排沉默的、尽职的士兵,在确认他刚刚构建的防线的稳固性。这是优惠券发放模块的压力测…...

百元级GPT-2复现指南:nanochat框架下的低成本大语言模型训练实践

1. 项目概述:从零到一,亲手打造你的百元级GPT-2如果你对大型语言模型(LLM)充满好奇,想亲手训练一个属于自己的模型,但又对动辄数万行代码、需要数十张GPU的庞大项目望而却步,那么nanochat就是你…...

保姆级教程:用IntelliJ IDEA 2021.3.2搞定泛微ecology9后端二开环境(附避坑清单)

从零构建泛微ecology9后端开发环境:IntelliJ IDEA全流程避坑指南 第一次接触泛微ecology9后端开发时,最令人头疼的莫过于环境搭建。不同于常规Java项目,这套系统有着独特的目录结构和依赖管理方式。记得我最初尝试时,光是解决编译…...

FFmpeg视频裁剪工具:原理、封装与自动化实践

1. 项目概述:一个基于FFmpeg的精准视频裁剪工具在视频内容创作和后期处理的日常工作中,我们经常会遇到一个看似简单却颇为繁琐的需求:从一段长视频中,精准地裁剪出我们需要的片段。无论是制作短视频、提取会议重点,还是…...

TMS320C6000平台H.263解码器优化实现

1. H.263解码器在TMS320C6000平台上的实现架构1.1 系统整体设计H.263视频解码器在TMS320C6000数字信号处理器上的实现采用了分层模块化设计架构。该架构基于ITU-T H.263标准规范,针对DSP平台的特性进行了深度优化。系统核心由比特流解析、运动补偿、反离散余弦变换(…...

Vidura开源框架:模块化AI对话编排与自动化评估实战指南

1. 项目概述:一个开源的AI对话编排与评估框架最近在折腾AI应用开发,特别是涉及到多模型对话、复杂工作流编排和效果评估时,总感觉市面上现成的工具要么太重,要么太零散。直到我发现了Vidura这个项目,它像是一套为AI对话…...

ARM Trace Buffer扩展:内存访问与缓存一致性详解

1. ARM Trace Buffer扩展概述在ARM架构的调试子系统中,Trace Buffer(跟踪缓冲区)扮演着关键角色,它负责捕获和存储处理器执行过程中的指令流和数据访问信息。这种机制对于系统调试、性能分析和安全监控至关重要,特别是…...

IP-XACT与嵌入式系统设计自动化实践

1. IP-XACT与嵌入式系统设计自动化革命在2000年代初的半导体行业,设计团队面临着一个日益严峻的挑战:随着SoC复杂度呈指数级增长,传统基于RTL的设计方法已经无法应对集成数十个IP核的现代芯片开发需求。正是在这样的背景下,SPIRIT…...

神经语音解码技术BrainWhisperer:ASR与BCI的融合创新

1. 项目概述BrainWhisperer是一项突破性的神经语音解码技术,它巧妙地将大规模自动语音识别(ASR)模型与脑机接口(BCI)技术相结合。这项技术的核心目标是通过解码大脑皮层的神经活动,直接重建人类语音内容&am…...

语音技能开发框架解析:从事件驱动到插件化实现

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫hermesnest/sister-skill。乍一看这个名字,可能会觉得有点抽象,甚至带点神秘色彩。但如果你对智能语音助手、家庭自动化或者个人AI助理这类话题感兴趣,那这个项目绝对值…...

ConvNeXt优化扩散模型:高效图像生成新方案

1. 项目概述ConvNeXt在高效卷积扩散模型中的应用与优化,是一项针对当前生成式AI领域计算资源消耗问题的创新性解决方案。近年来,扩散模型凭借其出色的生成质量在图像合成领域崭露头角,但其高昂的计算成本一直是实际应用中的主要瓶颈。传统基于…...

Cromwell CMS:基于TypeScript的无头CMS,赋能内容创作者与开发者

1. 项目概述:一个为内容创作者和开发者而生的无头CMS如果你正在寻找一个既能满足内容创作者“开箱即用”的便捷需求,又能给予开发者充分自由度的现代网站构建方案,那么 Cromwell CMS 绝对值得你花时间深入了解。它不是一个简单的博客工具&…...

基于开源基座模型构建垂直领域大语言模型:从数据到部署全流程解析

1. 项目概述与核心价值 最近在开源社区里,一个名为“MiuLab/Taiwan-LLM”的项目引起了我的注意。乍一看这个标题,可能会让人产生一些联想,但作为一名长期关注大语言模型(LLM)技术发展和本地化应用的从业者,…...

【项目实训MemeMind——Blog3】

项目实训MemeMind——Blog3完善第一个任务——数据源获取理解反爬障碍之AJAX类反爬障碍探索反爬障碍之AJAX类反爬障碍攻克AJAX类反爬障碍完善第一个任务——数据源获取 本篇博客将在上篇提到的爬虫架构基础上进一步对常见反爬障碍进行攻克。 理解反爬障碍之AJAX类反爬障碍 什…...

现代PHP项目Doctrine ORM集成实践:架构、性能与DDD应用

1. 项目概述:一个为现代Web应用量身定制的ORM工具如果你正在开发一个中大型的Web应用,无论是电商平台、内容管理系统还是企业级后台,数据库操作都是绕不开的核心。从简单的增删改查到复杂的多表关联、事务处理,再到性能优化&#…...

日文NLP工具链全解析:从分词到OCR的实战选型指南

1. 项目概述:一份日文NLP从业者的“藏宝图”如果你正在处理日文文本,无论是想做一个情感分析机器人、一个智能翻译工具,还是想从海量日文资料里挖掘信息,你首先会遇到的难题是什么?我的经验是,不是算法不够…...

OpenSoul项目解析:构建具备持续记忆与情感状态的AI认知架构

1. 项目概述与核心价值最近在开源社区里,一个名为“OpenSoul”的项目引起了我的注意。这个项目由用户“samttoo22-MewCat”发起,虽然名字听起来有点神秘,但它的核心目标非常明确:构建一个能够模拟人类灵魂或深层认知过程的AI框架。…...