什么决定了页面大小和簇大小?

Tim*_*Tim 2 memory linux filesystems partitioning

内存页的大小是由 RAM 本身决定还是由操作系统决定?即,对于使用 RAM 的所有操作系统,RAM 的页面大小是否相同?

文件系统集群的大小是由文件系统本身决定的,还是由使用该文件系统的操作系统决定的?例如,一个ntfs分区在Linux下和Windows下使用时,该分区的簇大小是否相同?

谢谢。

saw*_*ust 5

内存页大小 内存页大小
的约束主要是 MMU(内存管理单元)硬件和性能标准。显然,MMU 必须支持所选的页面大小(即提供虚拟内存转换的页面映射硬件)。页面大小是根据发生页面错误时应该换入或换出的代码或数据量选择的(一个小函数不在内存中,所以我们是换出数据并读取 1K 的代码还是 8K代码?),以及传输该数量代码/数据的成本(例如,读取两个扇区比读取 16 个扇区快)。
从历史上看,4KiB 一直是许多系统的合适平衡。实际使用的大小在操作系统的虚拟内存代码中指定。

集群大小
集群大小纯粹是一个文件系统单位,术语“集群”主要是 Microsoft 术语。通用术语是文件系统内的分配单元。分配单元是文件系统的特定安装所固有的(即,一个 NTFS 分区的簇大小可以为 4 KiB,同一磁盘驱动器上的另一个 NTFS 分区可以具有 64KiB 的簇)。

文件系统分配单元主要用于记录空闲(即未分配)与使用中(即分配给文件和目录)磁盘扇区(在分区中)。每个文件都由一个有序的分配单元(即集群)列表组成。

分配大小在文件系统创建(即格式化)时选择/指定,并且必须基于一定数量的扇区(但最好是 2 的幂),因为扇区大小是访问和物理磁盘的基本单位输入/输出。较小的分配大小(例如只有 1 个扇区)往往会对文件系统(和磁盘)性能产生更大的负面影响(而不是正面,即更少浪费的空闲空间),例如更大的分配表、更多的簿记。小的分配大小也会限制分配寻址和总文件系统容量。当文件系统必须跨越大分区和/或典型文件大小会很大(大集群大小可以减少碎片)时,大分配大小是有益的,但代价是浪费更多的空闲空间。

请注意,磁盘 I/O 不必以分配大小为单位执行(例如,如果文件的扇区长度小于 512 字节,操作系统可以选择仅读取第一个扇区而不是整个集群)。但是任何访问文件系统的操作系统都必须遵守其固有的分配大小(即分配大小不能更改)。

另请参阅磁盘扇区的用途是什么?一个小的分配单位尺寸的缺点