Filesystems 为什么FAT32磁盘仅限于4GB文件?

Filesystems 为什么FAT32磁盘仅限于4GB文件?,filesystems,fat32,filesize,Filesystems,Fat32,Filesize,我不是在寻找解决办法;我想要一个解释。我在谷歌上找到的大多数链接都告诉我,文件限制是4GB,但不是为什么 我知道维基百科的解释: 但这仍然没有详细说明原因。(磁盘扫描程序和它有什么关系?) 也许那时我就会明白是否有可能克服4GB文件大小的限制 因为FAT32存储32位文件大小,而32位中可以存储的最大值为2^32-1~=4.29e9。2^32-1字节=4GB-1字节 (事实上,这在维基百科的文章中有解释。)为了扩展这个答案,FAT32源于FAT16和FAT12。FAT12推出时,PC机运行的是1

我不是在寻找解决办法;我想要一个解释。我在谷歌上找到的大多数链接都告诉我,文件限制是4GB,但不是为什么

我知道维基百科的解释:

但这仍然没有详细说明原因。(磁盘扫描程序和它有什么关系?)


也许那时我就会明白是否有可能克服4GB文件大小的限制

因为FAT32存储32位文件大小,而32位中可以存储的最大值为2^32-1~=4.29e9。2^32-1字节=4GB-1字节


(事实上,这在维基百科的文章中有解释。)

为了扩展这个答案,FAT32源于FAT16和FAT12。FAT12推出时,PC机运行的是16位操作系统,没有超过10兆字节的驱动器。我认为没有人会期望PC上的任何人会需要一个400倍于最大可用驱动器大小的文件。此外,即使微软有先见之明为每个目录条目分配一个额外的字节来保存文件大小的32-39位(允许每个文件最多1 TB),也很怀疑任何应用程序程序员会使用它。没有任何语言为大于32位的整数数学提供方便的支持;即使是32位的数学也被认为是相当花哨的


在我看来,一个更大的问题是,为什么我不知道有人在努力开发一个标准的非FAT32存储接口,而该接口不基于顺序编号的扇区。闪存驱动器和硬盘驱动器都可以从了解不同扇区写入的逻辑意义中获益(对于闪存,因为在执行磨损管理时无需复制已删除的扇区;对于硬盘,因为它允许以不违反数据一致性要求的方式对写入进行重新排序).

我也有同样的疑问,最终意识到每个文件都有自己的元数据,文件大小包含4个字节。因此,最大文件大小是4G-1个字节。

是的,我知道,但它为什么会这样做?根据一些随机约定?当然,设计文件系统的人知道这是一个限制,那么为什么要满足这个限制呢?这是因为当时的硬件可用吗?FAT32是在32位硬件上实现的,适用于32位操作系统和32位编译器,因此这是一个明显的选择,超过32位的任何东西都会花费宝贵的处理器周期、磁盘空间和编程时间。(在那些日子里,我们认为4GB对于HD来说是相当大的,更不用说单个文件了。)啊,非常有趣。这正是我想知道的。谢谢!我认为fat32是关于让文件分配表addresing(集群计数,其中fat字段中的值添加到文件中的下一个链(32位),但由于1个集群大约是4KB,我不明白为什么是4GB)