你管这叫文件系统

AAC编解码器在实时通信中的性能对比与应用选择 本文深入分析了AAC编解码器在实时通信中的性能优化,重点对比了faac、faad2与fdk-aac三大开源方案在WebRTC场景下的表现。通过实测数据揭示其在延迟、音质和资源消耗等关键指标的差异,并提供场景化选型建议与调优技巧,帮助开发者提升实时音视频通信质量。 阅读详情

引言

你手里有一块硬盘,大小1T

fs1

你还有一堆文件

fs2

这些文件在硬盘看来,就是一堆二进制数据而已

fs3

你准备把这些文件存储在硬盘上,并在需要的时候读取出来。要设计怎样的软件,才能更方便地在硬盘中读写这些文件呢?

存一个文件

首先我不想和复杂的扇区,设备驱动等细节打交道,因此我先实现了一个简单的功能,将硬盘按逻辑分成一个个的块,并可以以块为单位进行读写。每个块就定义为两个物理扇区的大小,即 1024 字节,就是 1KB 啦。硬盘太大不好分析,我们就假设你的硬盘只有 1MB,那么这块硬盘则有 1024 个块。

fs4

OK,我们开始存文件啦!准备一个文件

fs3a

随便选个块放进去,3 号块吧!

fs4-3a

成功!首战告捷!

存多个文件

再存一个文件!诶?发现问题了,万一这个文件也存到了 3 号块,不是把原来的文件覆盖了么?不行,得有一个地方记录,现在可使用的块有哪些,像这样。

块 0:未使用
块 1:未使用
块 2:未使用
块 3:已使用
块 4:未使用
…
块 1023:未使用

那我们就用 0 号块,来记录所有块的使用情况吧!怎么记录呢?

位图!

fs1.gif

那我们给块 0 起个名字,叫块位图,之后这个块 0 就专门用来记录所有块的使用情况,不再用来存具体文件了。

fs5

当我们再存入一个新文件时,只需要在块位图中找到第一个为 0 的位,就可以找到第一个还未被使用的块,将文件存入。同时,别忘了把块位图中的相应位置 1。完美!

读取文件

下面,我们尝试读取刚刚的文件。

咦?又遇到问题了,我怎么找到刚刚的文件呢?根据块号么?这也太蠢了,就像你去书店找书,店员让你提供书的编号,而不是书名,显然不合理。

因此我们给每个文件起一个名字,叫文件名,通过它来寻找这个文件。那必然就要有一个地方,记录文件名与块号的对应关系,像这样:

葵花宝典.txt:3 号块
数学期末复习资料.mp4:5 号块
低并发编程的秘密.pdf:10 号块
…

别急,既然都要选一个地方记录文件名称了,不妨多记录一点我们关心的信息吧,比如文件大小、文件创建时间、文件权限等。

这些东西自然也要保存在硬盘上,我们选择用一个固定大小的空间,来表示这些信息,多大空间呢?128 字节吧。为啥是 128 字节呢?我乐意。

fs6

我们将这 128 字节的结构体,叫做一个 inode。

之后,我们每存入一个新的文件,不但要占用一个块来存放这个文件本身,还要占用一个 inode 来存放文件的这些元信息,并且这个 inode 的所在块号这个字段,就指向这个文件所在的块号。

fs7

如果一个 inode 为 128 字节,那么一个块就可以容纳 8 个 inode,我们可以将这些 inode 编上号。

fs8

如果你觉得 inode 数不够,也可以用两个或者多个块来存放 inode 信息,但这样用于存放数据的块就少了,这就看你自己的平衡了。

fs8a

同样,和块位图管理块的使用情况一样,我们也需要一个 inode 位图,来管理 inode 的使用情况。我们就把 inode 位图,放在 1 号块吧!同时,我们把 inode 信息,放在 2 号块,一共存 8 条 inode,这样我们的 2 号块就叫做 inode 表。

现在,我们的文件系统结构,变成了下面这个样子:

fs7a

注意:块位是管理可用的块,每一位代表一个块的使用与否。inode 位图管理的是一条一条的 inode,并不是 inode 所占用的块,比如上图中有 8 条 inode,则 inode 位图中就有 8 位是管理他们的使用与否。

存较大文件

现在,我们的文件很小,一个块就能容下。但如果需要两个块、三个块、四个块呢?

很简单,我们只需要采用连续存储法,而 inode 则只记录文件的第一个块,以及后面还需要多少块,即可。

这种办法的缺点就是:容易留下大大小小的空洞,新的文件到来以后,难以找到合适的空白块,空间会被浪费。

fs9

看来这种方式不行,那怎么办呢?既然在 inode 中记录了文件所在的块号,为什么不扩展一下,多记录几块呢?原来在 inode 中只记录了一个块号,现在扩展一下,记录 8 个块号!而且这些块不需要连续。

fs6a

嗯,这是个可行的办法!

但是这也仅仅能表示 8 个块,能记录的最大文件是 8K(记住,一个块是 1K), 现在的文件轻松就超过这个限制了,这怎么办?很简单,我们可以让其中一个块,作为间接索引。

fs6b

这样瞬间就有 263 个块(多了 256 -1 个块)可用了,这种索引叫一级间接索引。

如果还嫌不够,就再弄一个块做一级间接索引,或者做二级间接索引(二级间接索引则可以多出 256 * 256 - 1 个块)。

我们的文件系统,暂且先只弄一个一级间接索引。硬盘一共才 1024 个块,一个文件 263 个块够大了。再大了不允许,就这么任性,爱用不用。

好了,现在我们已经可以保存很大的文件了,并且可以通过文件名和文件大小,将它们准确读取出来啦!

精益求精

再想想看这个文件系统有什么毛病。比如,inode 数量不够时,我们是怎么得知的呢?是不是需要在 inode 位图中找,找不到了才知道不够用了?

同样,对于块数量不够时,也是如此。要是有个全局的地方,来记录这一切,就好了,也方便随时调整,比如这样:

inode 数量
空闲 inode 数量
块数量
空闲块数量

那我们就再占用一个块来存储这些数据吧!由于他们看起来像是站在上帝视角来描述这个文件系统的,所以我们把它放在最开始的块上,并把它叫做超级块,现在的布局如下:

fs10

现在,块位图、inode 位图、inode 表,都是固定地占据着块 1、块 2、块 3 这三个位置。

假如之后 inode 的数量很多,使得 inode 表或者 inode 位图需要占据多个块,怎么办?或者,块的数量增多(硬盘本身大了,或者每个块变小了),块位图需要占据多个块,怎么办?程序是死的,你不告诉它哪个块表示什么,它可不会自己猜。

很简单,与超级块记录信息一样,这些信息也选择一个块来记录,就不怕了。那我们就选择紧跟在超级块后面的 1 号块来记录这些信息吧,并把它称之为块描述符:

fs10a

当然,这些所在块号只是记录起始块号,块位图、inode 位图、inode 表分别都可以占用多个块。

存一批文件

现在,我们再尝试存入一批文件。

  • 葵花宝典.txt
  • 数学期末复习资料.mp4
  • 赘婿1.mp4
  • 赘婿2.mp4
  • 赘婿3.mp4
  • 赘婿4.mp4

诶?这看着好不爽,所有的文件都是平铺开的,能不能拥有层级关系呢?比如这样

  • 葵花宝典.txt

  • 数学期末复习资料.mp4

  • 赘婿

    • 赘婿1.mp4
    • 赘婿2.mp4
    • 赘婿3.mp4
    • 赘婿4.mp4

我们将"葵花宝典.txt" 这种称为普通文件,将赘婿这种称为目录文件,如果要访问"赘婿1.mp4",那全文件名要写成:

赘婿/赘婿1.mp4

如何做到这一点呢?那我们又得把 inode 结构拿出来说事了:

fs6

此时需要一个属性来区分这个文件是普通文件,还是目录文件。

缺什么就补什么嘛,我们已经很熟悉了,专门加一个 4 字节,来表示文件类型:

fs6c

如果是普通文件,则这个 inode 所指向的数据块仍然和之前一样,就是文件本身原封不动的内容。但如果是目录文件,则这个 inode 所指向的数据块,就需要重新规划了。

这个数据块里应该是什么样子呢?可以是一个一个指向不同 inode 的紧挨着的结构体,比如这样:

fs11

这样先通过"赘婿"这个目录文件,找到所在的数据块。再根据这个数据块里的一个个带有 inode 信息的结构体,找到这个目录下的所有文件。

查看文件

不过这样的话,你想想看,如果想要查看一下赘婿这个目录下的所有文件(比如 ll 命令),将文件名和文件类型都展示出来,怎么办呢?

就需要把一个个结构体指向的 inode 从 inode 表中取出,再把文件名和文件类型取出,这很是浪费时间。而让用户看到一个目录下的所有文件,又是一个极其常见的操作。所以,不如把文件名和文件类型这种常见的信息,放在数据块中的结构体里吧:

fs11a

同时,inode 结构中的文件名,好像就没啥用了,这种变长的东西放在这种定长的结构中本身就很讨厌,早就想给它去掉了。而且还能给其他信息省下空间,比如文件所在块的数组,就能再多几个了。

那就去掉吧:

fs11b

OK,大功告成,现在我们就可以给文件分门别类放进不同目录下了,还可以在目录下创建目录,无限套娃!

根目录的访问

现在的文件系统,已经比较完善了,只是还有一点不太爽。我们访问到一个目录下,可以很舒服地看到目录里的文件,然后再根据名称访问这个目录下的文件或者目录,整个过程都是一个套路。但是,最上层的目录下的所有文件,即根目录,现在仍然需要通过遍历所有的 inode 来获得,能不能和上面的套路统一呢?

答案非常简单,我们规定,inode 表中的 0 号 inode,就表示根目录,一切的访问,就从这个根目录开始:

fs11c

我们最后来欣赏下我们的文件系统架构:

fs12

你是不是觉得这没啥了不起的。但这个破玩意,它就叫文件系统。

后记

这个文件系统,和 linux 上的经典文件系统 ext2 基本相同。

下面是画的 ext2 文件系统的结构(字段部分只画了核心字段):

fs13

估计你是看不清了,我说下主要异同点:

  1. 超级块前面是启动块,这个是 PC 联盟给硬盘规定的 1KB 专属空间,任何文件系统都不能用它。

  2. ext2 文件系统首先将整个硬盘分为很多块组,但如果只有一个块组的话,和我们的文件系统整体结构就完全一样了,分别是超级块、块描述符、块位图、inode 位图、inode 表、数据块。

  3. ext2 文件系统的 inode 表中用 15 个块来定位文件,其中第 13 个块为一级间接索引、14 个为二级间接索引、15 个为三级间接索引。

  4. ext2 文件系统的文件类型分得更多,还有常见的如块设备文件、字符设备文件、管道文件、socket 文件等。

  5. ext2 文件系统的超级块、块描述符、inode 表中记录的信息更多,但核心的和我们的文件系统一样,而且这些字段在后续的 ext3 和 ext4 中不断增加,保持向前兼容。

  6. ext2 文件系统的 2 号 inode 为根目录,而我们的系统是 0 号 inode 为根目录,这个很随意,你设计一个文件系统定一个 187 号 inode 为根目录也没人拦着你。

如果你想了解 ext2 文件系统的全部细节,有三种方式:

  1. 看源码,linux1.0 后的源码都有 ext2 文件系统的实现,源码是最准确的。

  2. 看官方文档,这里有个 pdf:官方文档pdf版

  3. 看优质博客,这里我推荐一个:c/cpp博客

  4. 用 linux 的 mke2fs 命令生成一个 ext2 文件系统的磁盘镜像,然后一个字节一个字节分析其格式:ext2文件系统镜像分析文件。

如果看源码和官方文档毫不吃力,当然主推这两个,因为毕竟是一手资料。

但大多数人可能无法做到,有时也没大必要,因此也可以看一些优质的博客。

介绍思想的,我觉得我这一篇就算是很优质的一篇了,它会带你从设计者角度了解为什么这样来设计文件系统。

介绍细节的,那些连文件系统的格式和字段都写不对的,就别看了,所以我这里良心推荐一篇,就是上面的方式三,可以放心大胆,逐字逐句地食用。

最后你还可以用方式四,自己将文件系统镜像导出来,进行分析。

CyberChef本地搭建 阅读详情

相关推荐

RK3588零拷贝视频流水线实战:用GStreamer+Mpp实现8K硬解与DRM显示

本文深入探讨了在RK3588平台上构建零拷贝视频流水线的工程实践。通过结合GStreamer与MPP,实现了从8K视频硬解到DRM显示的全流程硬件加速,有效解决了高分辨率视频处理中的DDR带宽瓶颈问题。文章详细解析了dma-buf数据流机制、管道构建与性能优化策略,为多路视频并发处理提供了高效的系统架构解决方案。

github5actions的博客 1169

一份关于文件系统的描述-(你管这破玩意叫文件系统?)

https://mp.weixin.qq.com/s/vwNmZzeZyUCZoDrQA9IxzQ

狂奔的鸵鸟 308

AUTOSAR RTE配置实战:从ECU分区到Task映射的完整指南

本文提供了一份AUTOSAR RTE配置的完整实战指南。从创建ECU分区、定义OS任务,到实现Runnable Entity与Task的精确映射,详细解析了每一步的操作要点与常见陷阱。文章结合配置工具界面,旨在帮助开发者高效完成RTE配置,确保系统实时性与数据一致性,是掌握AUTOSAR核心开发流程的实用参考。

weixin_29228203的博客 484

图解 | 原来这就是网络

你是一台电脑,你的名字叫 A 很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。 直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来。 用一根网线连接起来怎么就能"通信"了呢?我可以给你讲 IO、讲中断、讲缓冲区,但这不是研究网络时该关心的问题。 如果你纠结,要么去研究一下操作系统是如何处理网络 IO 的,要么去研究一下包是如何被网卡转换成电信号发送出去的,要么就仅仅把它当做电脑里有个小人在开枪吧~ 反正,你们就是连起来了,并且可以通..

qq_39380766的博客 6119

1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统

Cubemx_STM32H743 SD_Card纳入文件管理系统1、简介2、CubeMX配置 1、简介 和前面文章原理其实一样的。 1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统 现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。 下面直接介绍SDcard,其他参考前面文章。 2、CubeMX配置 ...

oDuanYanGuHong的博客 1079

详解STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用

本文详细解析了STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用。通过CubeMX配置、代码实现和常见问题解决方案,帮助开发者高效实现多通道数据同步采集,提升工业自动化和嵌入式系统的数据采集效率与精度。

ii567的博客 364

你管这叫操作系统源码(完结)

你管这叫操作系统源码——以小说的心态去阅读解析linux操作系统源码之完结

wq_0708的博客 1105

永磁同步电机功率计算实战:从公式到避坑指南(附Excel计算模板)

本文详细解析永磁同步电机(PMSM)功率计算的实战技巧,涵盖三维参数体系、三相与单相系统差异、动态工况补偿及常见计算陷阱。特别提供Excel计算模板,帮助工程师快速准确完成功率计算,避免工业应用中的常见错误,提升工作效率。

x8y9z0的博客 804

你管这破玩意叫指针?

你不要去记本文的知识点,重在整个推导的过程,要去理解指针想解决的问题是什么,它的合理性在哪,哪一部分信息是给程序员和编译器看的,哪一部分操作最终又是真正落实到 CPU 指令的,这些才是关键。这样,我寻找我密码的方式,就是先通过 p 所在的内存地址找到里面存的值,也就是 a 的内存地址 6,再通过 a 的内存地址找到里面存的值,也就是我要找的密码 1234。这种说法就非常别扭,很多书上,即想讲清楚指针的本质,又想讲清楚指针的注意事项,混杂在一起,让读者即没有搞清楚指针的本质,又不知道指针的注意事项。

程序员高级码农的博客 1191

Android HTTPS抓包证书配置全解:Proxyman实战避坑指南

HTTPS抓包本质是中间人(MITM)通信的可信建立过程,其核心在于客户端对代理根证书的信任链配置。在Android平台,自7.0起系统默认不信任用户安装的CA证书,必须通过Network Security Config显式声明trust-anchors,将Proxyman导出的PEM格式根证书纳入App级信任锚点。这一机制区别于iOS和桌面浏览器,导致大量开发者卡在‘证书已安装却无法解密’的误区。技术价值在于打通开发调试闭环:精准定位SSLHandshakeException、绕过证书固定、支持React

weixin_32175665的博客 649

从查表法到实时计算:SimpleFOC库中正弦函数优化的技术演进

本文深入探讨了SimpleFOC库v2.0.1版本中正弦函数优化技术的演进,从传统查表法到实时计算的创新实践。通过定点数优化、对称性利用和分段线性插值等关键技术,实现了在嵌入式电机控制中的高效三角函数计算,显著提升性能和资源利用率。

weixin_28273593的博客 452

图解 | 你管这破玩意儿叫网络?

你是一台电脑,你的名字叫 A很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来。用一根网线连接起...

码农翻身 2369

【华为OD机试真题】4、字符统计及重排 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数, 并按照字母出现次数从大到小的顺序。输出各个字母及其出现次数。 如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前

KJ.JK 3289

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

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

咖喱年糕的博客 4025

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

linux文件系统

,缩短 GNU/Linux 的开机时间。无论最下层的文件系统是什么,我们最上层的用户端尽管使用系统调用接口(open、write、read等)或glibc接口(fopen、fwrite、fread等)来操作就可访问文件系统里的文件,使得一切都是文件成为可能。/sys文件系统基本上包含了系统中所有设备的所有信息,比如制造商和型号、设备插入的位置、设备的状态、设备的层次结构等等。在我们嵌入式Linux中,NFS的主要应用如:把主机的上文件(比如目标板的可执行文件)共享给目标板,这样目标板就很方便地运行程序。

123 1万+

VB摄像头监控

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

文件系统学习1——文件系统基本概念

2019.2.27 最近准备学习一下文件系统的基本知识,学习路线如下: 文件系统基本概念->文件系统磁盘布局->文件系统IO系统->MQ队列机制->IO管控。 下面开始简单介绍一下文件系统的一些基本概念,大部分来自于书籍和一些博客上的内容,相关链接如下: Ext4专题文章索引 linux文件系统详解 鸟哥 Linux 磁盘与文件系统管理 Linux 的虚拟文

Zuoerfeng 2277

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文件系统(二)—如何设计一个文件系统

前面一章主要学习了文件系统的存储和分配方式的理论知识,本章接着理论知识,如何设计一个文件系统(本章不涉及任何代码实现),其主要的内容包括如下: 如何一步步设计一个文件系统,了解文件系统由那些组成 当我们读写文件时底层的工作原理是什么,从组成到实现原理 1. 文件系统的组成部分 对于文件系统我们只需要支持两种最基本的操作:读和写,就可以解决长期的存储问题。不过,这里存在很多不便于实现的操作,特别是有很多程序或者多用户使用着的大型系统上,很容易产生一些问题,例如: 如何找到对应的信息? 如何防止一个用户读

奇小葩 9371

虚拟文件系统和文件系统挂载

虚拟文件系统(VFS)就像是操作系统里的一个翻译官,它让不同的文件系统(比如Windows的NTFS、Linux的ext4)都能用同一种语言和操作系统对话。这样,不管你用的是什么文件系统,操作系统都能轻松管理。VFS有几个特点:1. 它给用户和程序提供了一个统一的接口,这样大家就不用关心文件系统背后的复杂操作了。2. 它要求所有文件系统都得会一些基本操作,比如打开文件、读取文件、写入文件等。3. 当你打开一个文件,VFS就会在电脑的内存里创建一个叫vnode的小东西,用来统一表示这个文件。

la1466128339的博客 1558

文件系统(dcoker联合文件系统&linux文件系统)

在生活中我们经常会看到投影,比如投影仪投到幕布上可以显示具体的画面。如果有3个幕布呢?每个幕布上都会有固定的图案(假设这些图案可受一种光的影响来实现向下层幕布的映射),将一个强光打在三个幕布上此时会发生什么?那此时在不同层的幕布同一个位置有不同的图案颜色此时会怎么办?即下层的会覆盖到上层的图案,下层的优先展示。有了上面的概念之后,当我们用docker pull xx 拉取一个镜像的时候会出现下面的场景:这里的打印出许多Pull complete以及前面的12位字符对应就是一层。

weixin_44678969的博客 1198

根文件系统

根文件系统是内核中虚拟文件系统(VFS)通过挂载管理的第一个文件系统,它提供了系统运行的基础,而 VFS 则是内核中抽象出的一层,负责统一管理不同的文件系统类型。通过VFS,内核不仅能够挂载和管理根文件系统,还能处理其他虚拟文件系统如/proc和/sys,这些虚拟文件系统直接与内核和硬件交互。

Interview_TC的博客 1224

linux文件系统基础--VFS、根文件系统rootfs和实际文件系统的关系

文件系统概念# 文件系统是一些代码,是一套软件,这套软件的功能就是对存储设备的扇区进行管理,将这些扇区的访问变成了对目录和文件名的访问。我们在上层按照特定的目录和文件名去访问一个文件时,文件系统会将这个目录+文件名转换成对扇区号的访问。 虚拟文件系统接口(VFS)是linux定义的一个文件系统的统一接口,这样各种类型的文件系统都采用一样的接口给用户 虚拟文件系统存储在RAM里的,没有实际的设...

jinking01的专栏 3482

Linux文件系统有哪些

Linux文件系统有哪些 1、Linux 文件系统简介 操作系统就是处理各种数据的,这些数据在硬盘上就是二进制,人类肯定不能直接看懂这些二进制数据,要有一个翻译器,将这些二进制的数据还原为人类能看懂的文件形式,这个工作就是由文件系统来完成的,文件系统的目的就是实现数据的查询和存储,由于使用场合、使用环境的不同,Linux 有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U 盘、SD 卡、NAND FLASH、NOR FLASH、网络存储设备等。不同的存储设

HX_CODER 1万+

Windows的文件系统

整理关于WIndows文件系统的一些知识。如果有什么不对,希望有人可以提出...

km的博客 9447

linux根文件系统的分类,Linux中文件系统分类方法

Linux一个重要的哲学是:一切皆文件。而文件与文件系统是密切相关的,本篇笔记我们来一起学习、理清那些令我们眼花缭乱的文件系统。文件系统粗略的分类:下面依次进行介绍:根文件系统根文件系统(rootfs)是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。根文件系统的根目录...

weixin_42099151的博客 3605

根文件系统与文件系统的区别

Ø         根文件系统:英文应该为Root Filesytem,但是有时会被简单地称为文件系统。而实际上就是指的我们前一节所指的Linux系统运行所需的一些文件,命令组成的整个文件目录结构。 Ø         文件系统:英文应该为File System或Filesytem,指的是用来方便管理文件存储和数据组织的一种方法。例如Windows下的FAT、FAT32、NTFS,Lin

neiloid的专栏 8899

虚拟文件系统

现在我们的主流价值观是社会和谐、世界和谐。同样,Linux成功的关键因素之一是它具有与其他操作系统和谐共存的能力。你能够透明地安装具有其他操作系统文件格式的磁盘或分区,这些操作系统如Windows、其他版本的Unix,甚至像Amiga那样的市场占有率很低的系统。通过所谓的虚拟文件系统概念,Linux使用与其他Unix变体相同的方式设法支持多种文件系统类型。 虚拟文件系统所隐含的思想是把表示很多不同种类文件系统的共同信息放入内核;其中有一个字段或函数来支持Linux所支持的所有实际文件系统所提供的任何操作。

云(存储),松(耦合) 5722
上一篇: 你管这叫操作系统源码(十一)
下一篇: 你管这叫操作系统源码(十二)
wq_0708
博客等级 码龄6年 2万+粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值