我要查找的关于FAT16的所有站点都声明它不能分配超过2GB的信息。好的。太棒了。我相信你。但你是如何得出这个结论的(不仅仅是测试)?
是否有某种公式可以用来确定一个FAT16系统能容纳多少?
发布于 2018-04-30 10:45:23
FAT16使用16位来识别集群。因此,在没有标识符之前,最多有65536个群集,一些标识符保留给非文件使用。每个文件至少占用一个群集。较大的集群增加了每个文件的最小分配,增加了小文件的开销。
然后,群集大小告诉您可识别的最大卷。对于32 2GiB簇,即32* 1024 * 65536 B=2 2GiB。
您可以通过增加磁盘上扇区的大小来无限期地增加群集大小,但是您仍然只限于文件的最大数量。您还会遇到默认扇区大小(512 B)的软件问题。
在有物理容量的~2 2GiB的时刻,处理器和操作系统是32位的,所以移动到FAT32是一个明智的选择,允许小集群中有更多的文件。
发布于 2018-04-30 16:54:39
实际上,多年来"FAT16“有几种不同的限制,但让我们考虑一下从"compaq 3.31”到windows 95的版本。
脂肪体积被分成簇。每个集群由两个扇区组成。FAT16上每个集群的扇区数存储为8位有符号数字。因此,每个集群的最大可能扇区为64。
群集编号存储为16位无符号值。将集群总数限制在65536。乘以每个簇的最大扇区,你就得到了4194304个扇区的限制。
硬盘驱动器的(逻辑)扇区大小为512字节。乘以上面提到的扇区数量的限制,你就得到了你的2 2GiB极限。在原则上,具有较大扇区大小的介质可以支持更大的FAT16容量,但我认为在实践中没有发生这种情况。
Windows将“每个集群扇区”字段的解释更改为无符号8位。这允许4GiB FAT16分区有512个字节扇区(理论上更大的驱动器上有更大的扇区)。AIUI windows 98增加了对读取和写入此类分区的支持,但它无法创建这些分区,而且磁盘实用程序也无法修复它们。
当然,可以对文件系统格式进行相对较小的调整,以支持更大的集群,从而支持更大的卷。然而,MS决定选择更激进的选择,使用windows 95 OSR2生成FAT32的32位集群索引。
我相信选择更激进的选择的原因是空间效率。考虑到当时典型的文件大小,32 the集群已经相当浪费,更大的集群甚至会被移动。
https://softwareengineering.stackexchange.com/questions/370180
复制相似问题