Filesystems FAT、Linux和NTFS文件系统

Filesystems FAT、Linux和NTFS文件系统,filesystems,ntfs,fat32,Filesystems,Ntfs,Fat32,我听说NTFS文件系统基本上是一个b树。这是真的吗?其他文件系统呢?它们是什么树 另外,FAT32与FAT16有何不同 FAT文件系统使用的是哪种树?下面是一个关于FAT16和FAT32的图表 名称FAT16和FAT16中的数字 FAT32表示位数 文件分配表所需的 进入 FAT16使用16位文件分配 表格条目(2 16个分配单元) Windows 2000保留前4位 FAT32文件分配表的 输入,这意味着FAT32具有最大 共有228个分配单元。然而, 该数字的上限为32 GB Windows

我听说NTFS文件系统基本上是一个b树。这是真的吗?其他文件系统呢?它们是什么树

另外,FAT32与FAT16有何不同


FAT文件系统使用的是哪种树?

下面是一个关于FAT16和FAT32的图表

名称FAT16和FAT16中的数字 FAT32表示位数 文件分配表所需的 进入

FAT16使用16位文件分配 表格条目(2 16个分配单元)

Windows 2000保留前4位 FAT32文件分配表的 输入,这意味着FAT32具有最大 共有228个分配单元。然而, 该数字的上限为32 GB Windows 2000格式实用程序


FAT32使用32位数字存储群集编号。它支持更大的磁盘和最大为4 GiB的文件

据我所知,FAT使用文件分配表来存储磁盘上的状态数据。它似乎不使用树。但我可能错了。

并使用了“”,这显然是B-树的一种特殊形式

使用B树(B树文件系统)

使用B+树,这显然是NTFS使用的

顺便说一句,如果你在维基百科上搜索这些内容,它们都列在右侧“目录内容”下的信息框中。

FAT(FAT12、FAT16和FAT32)不使用任何类型的树。除了描述分区本身的数据块之外,还使用了两个有趣的数据结构。在嵌入式系统中编写兼容实现所需级别的完整详细信息可从和第三方获得。有一篇像样的文章作为另一个出发点,其中也包含了很多关于它如何发展的历史

因为最初的问题是关于树的使用,所以我将快速总结FAT文件系统中的实际数据结构。有关准确的详细信息和历史记录,请参考上述参考资料

每个目录中的文件集存储在一个简单的列表中,最初是按照文件的创建顺序存储的。删除是通过将条目标记为已删除来完成的,因此后续的文件创建可能会重新使用该插槽。列表中的每个条目都是一个固定大小的结构,其大小刚好足以容纳经典的8.3文件名以及标志位、大小、日期和起始集群号。长文件名(还包括国际字符支持)是通过使用额外的目录条目槽来保存长文件名,与保存所有其他文件属性的原始8.3槽一起保存

磁盘上的每个文件都存储在一系列集群中,其中每个集群都是固定数量的相邻磁盘块。每个目录(磁盘的根目录除外)就像一个文件,可以根据需要通过分配额外的集群来增长

集群由(命名错误的)文件分配表管理,文件系统从该表获得其公共名称。此表是插槽的压缩阵列,磁盘分区中的每个集群对应一个插槽。名称FAT12表示每个插槽为12位宽,FAT16插槽为16位,FAT32插槽为32位。插槽存储空集群、最后一个集群和坏集群的代码值,或文件下一个集群的集群编号。通过这种方式,文件的实际内容表示为一个称为链的集群链表

较大的磁盘需要更宽的FAT条目和/或更大的分配单元。FAT12基本上只存在于软盘上,其4K集群的上限对于大小从未超过1MB的介质是有意义的。FAT16和FAT32都常见于拇指驱动器和闪存卡上。脂肪大小的选择部分取决于预期用途

访问特定文件的内容非常简单。从它的目录条目中,您可以了解它的总大小(以字节为单位)及其第一个集群号。根据群集号,您可以立即计算第一个逻辑磁盘块的地址。从按群集编号索引的FAT中,可以找到分配给该文件的链中的每个已分配群集

发现适合存储新文件或扩展现有文件的可用空间并非易事。FAT文件系统只是用代码值标记空闲集群。查找一个或多个自由簇需要搜索FAT

查找文件的目录条目也不是很快,因为目录没有排序,需要在目录中进行线性时间搜索以查找所需的文件。请注意,长文件名会占用每个长文件名的多个目录条目,从而增加搜索时间


FAT的优点仍然是实现起来非常简单,可以在小型微处理器中完成,因此即使是小型嵌入式系统和PC机之间的数据交换也可以以经济高效的方式完成。我怀疑它的怪癖和怪癖会伴随我们很长一段时间。

“Linux”不是一个文件系统。你应该先在维基百科上搜索。你可能想缩小搜索范围,因为有几个。。。!?Ext2在大多数应用中已经过时一段时间了(除非你把路由器、交换机和类似的设备计算在内)。Ext3是旧的标准,现在正被Ext4所取代。我猜更多的人使用Ext3。它已经推出很长一段时间了,这一点ext4可能更适合新安装。更不用说超级用户使用多个文件系统,比如ext2用于/boot,ReiserFS用于/var,ext4用于其他所有文件系统。NTFS使用B树作为索引,而不是B+树。我的理解是,btrfs使用B+树,而不仅仅是索引。小尼特,但是。。。