文件系统以块为基本分配单位,上限和下限由操作系统指定,例如Linux内核要求文件系统块大小为2的幂,但不能大于虚拟内存页大小。
将文件系统块大小限制为虚拟内存页面大小的动机是什么?这两个完全不同的术语可能有什么关系?这是否在某种程度上指的是映射机制?
答案1
动机只是简单而已。
试想一下,如果虚拟页面大小是按文件块的分数计算的,那么操作系统将需要进行簿记……
答案2
缓存内存的有效利用是禁止使用小于虚拟页面的集群的一个理由。
答案3
我总是这样看待它:
如果我们考虑较旧且有限的文件系统,则块/簇大小很大程度上与文件系统可能/允许的最大簇数量有关。
例如,12 位 FAT 条目为可寻址的簇数量设置了上限。1111111111111 是最大的 12 位二进制数。该数字的十进制等价数为 4095,十六进制等价数为 FFF。
16 位值增加了可寻址的簇数量。
因此,解决由我们可以寻址的簇数量导致的磁盘大小限制的一种方法是增加我们可以用来寻址簇/块的位数。
然而,另一种方法是增加集群或块的大小。
增加我们可以处理的簇数会增加开销。另一方面,增加簇/块大小会增加浪费:将 1 KB 文件存储在 4 KB 簇内,我们会浪费 3 KB。或者,将 13 KB 文件存储在 4 KB 簇中,我们再次浪费 3 KB,因为我们需要为文件分配 4 个簇。
因此,使用较大的块/簇大小时,需要在开销和可能浪费的空间增加之间进行权衡。例如,如果我们事先知道文件系统将主要处理大文件,那么我们可以选择较大的簇大小,这样可以减少开销。
页面充当操作系统和存储之间的“中间人”,但页面与块/群集大小不同,无法通过文件系统格式来定义,而是固定的。效率要求页面和块/群集大小之间有共同点,因此页面大小决定了最小块大小,因为它是一个固定值。