0

与较大的块大小相比,较小的块大小导致较低的内部碎片。如果允许我们使用典型的块大小值(2 的倍数),即 512、1024 或 2048 字节,与较大的块大小相比,是否有可能以较小的块大小产生更多的内部碎片?

4

1 回答 1

4

这是一个很好的问题。

让我尝试一个答案:

在为数据分配内存时,内部碎片是字节的“浪费”。如果块大小是 512 字节,你的数据只存储 1 个字节,就会浪费 511 字节,随着更大的块大小而增长。

另一方面,外部碎片是使用块之间的内存空间的浪费。例如:有一个内存块 A、B 和 C,块大小为 1 kbyte。如果使用 A 和 C,并且应该存储大小为 2 kbyte 的数据,则块 B 永远不能用于此。因此,这就是我们必须对 HDD 进行碎片整理并将数据更有效地整合在一起的原因。

正如您所问:是否有可能以较小的块大小有更多的内部碎片,答案应该是:这取决于您通常会保存什么。

让我们做一些计算:

Block size: 512 byte
Data to store: 64 kbyte
Blocks needed: 128
Internal fragmentation: 0%

Block size: 512 byte
Data to store: 64,1 kbyte
Blocks needed: 128,2
Internal fragmentation: 80% of 1 block

--

Block size: 2048 byte
Data to store: 64 kbyte
Blocks needed: 32
Internal fragmentation: 0%

Block size: 2048 byte
Data to store: 64,1 kbyte
Blocks needed: 32,05
Internal fragmentation: 95% of 1 block

--

Block size: 4096 byte
Data to store: 64 kbyte
Blocks needed: 32
Internal fragmentation: 0%

Block size: 4096 byte
Data to store: 64,1 kbyte
Blocks needed: 16,025
Internal fragmentation: 97,5% of 1 block

因此,这取决于您保存的内容。您将永远不会拥有任何系统,其中文件将始终具有平均大小。总会有大文件和许多小文件,因此需要进行权衡。

使用大块大小,您将有更多的内部碎片整理,但外部碎片会更好(因为保留块之间会有很多空间)。另一方面,小块大小会增加外部碎片的大小,但内部会更小。

一般来说,较大的块大小总是会增加内部碎片。最好是在块大小、内部碎片、磁盘访问时间和页表大小之间进行权衡。

于 2013-01-23T14:09:28.967 回答