虚拟内存中的页面大小有多重要
How critical is page size in virtual memory
所以我刚读到虚拟地址分为 1 - 页码和 2 - 偏移量。
我还读到页码指示您能够找到正确的页面和偏移量以获得您想要获得其物理内存的正确 "byte"。
因此,例如在 4KB
大小的页面中,我们保留了 12bits
作为偏移量,因为 2^12 = 4096
,即 4KB
.
我明白了。但我不明白使用页面背后的原因。
我的意思是,使用 4KB
大小的页面或 8KB
大小的页面,为什么我们不能使用 1byte
大页面?
我想这可以使所有内容逐字节读取和写入,你可以说这会减慢速度。
但是我们不是已经在做同样的事情了,首先找到页面并找到带偏移量的正确字节吗?
提出比 1byte
更大的页面背后的动机是什么?
我明白了使用虚拟内存的原因:避免交换。但为什么我们不能用更小、更直接的一个字节大小的页面来做到这一点?
这与磁盘上的簇大小是同一个问题。
更大的页面 => 更低的开销(更小的页面 tables)
页面更小 => 开销更大
更大的页面 => 更多内存浪费和更多磁盘 reading/writing 分页
页面更小 => 内存浪费更少,磁盘更少 reading/writing 分页
老爷子说页面大小往往比现在小得多(512 字节很常见)。随着内存的增长,浪费的内存分页问题已经减少,而开销问题(由于更多的页面)增加了。因此我们有更大的页面大小。
一个字节的页面让你一无所获。您必须以完整的磁盘块(通常为 512 字节或更大)写入磁盘。分页单个字节会非常慢。
现在添加页面保护和页面 tables。对于单字节页面,页面 table 开销会多于可用内存。
所以我刚读到虚拟地址分为 1 - 页码和 2 - 偏移量。
我还读到页码指示您能够找到正确的页面和偏移量以获得您想要获得其物理内存的正确 "byte"。
因此,例如在 4KB
大小的页面中,我们保留了 12bits
作为偏移量,因为 2^12 = 4096
,即 4KB
.
我明白了。但我不明白使用页面背后的原因。
我的意思是,使用 4KB
大小的页面或 8KB
大小的页面,为什么我们不能使用 1byte
大页面?
我想这可以使所有内容逐字节读取和写入,你可以说这会减慢速度。
但是我们不是已经在做同样的事情了,首先找到页面并找到带偏移量的正确字节吗?
提出比 1byte
更大的页面背后的动机是什么?
我明白了使用虚拟内存的原因:避免交换。但为什么我们不能用更小、更直接的一个字节大小的页面来做到这一点?
这与磁盘上的簇大小是同一个问题。
更大的页面 => 更低的开销(更小的页面 tables)
页面更小 => 开销更大
更大的页面 => 更多内存浪费和更多磁盘 reading/writing 分页
页面更小 => 内存浪费更少,磁盘更少 reading/writing 分页
老爷子说页面大小往往比现在小得多(512 字节很常见)。随着内存的增长,浪费的内存分页问题已经减少,而开销问题(由于更多的页面)增加了。因此我们有更大的页面大小。
一个字节的页面让你一无所获。您必须以完整的磁盘块(通常为 512 字节或更大)写入磁盘。分页单个字节会非常慢。
现在添加页面保护和页面 tables。对于单字节页面,页面 table 开销会多于可用内存。