蓝盟IT外包网管服务!
Linux已知以页为单位管理内存,无论是将磁盘上的数据加载到内存中还是将内存中的数据写回磁盘,操作系统都以页为单位运行,即使只向磁盘写入1字节的数据
Linux支持通常大小的内存页和大容量的内存页。 [^1],大多数处理器的记忆体页面预设大小为4KB,有些处理器使用8KB、16KB和64KB作为预设页面大小。 4KB页仍然是操作系统的默认内存页配置的主流。除了正常的内存页大小外,不同处理器还包含不同大小的页,x86处理器可以使用2MB的内存页大小。
4KB的内存页实际上是历史性的问题,1980年代确定的4KB至今仍然存在。 今天的硬件比以前更加丰富,但我们继承了迄今为止主流的内存页面大小。
如今,4KB的内存页面大小可能不是最佳选择,8KB或16KB可能是最佳选择,但这是过去某些情况下的折衷。 在本文中,我们不希望将4KB这一数字视为确定此结果的一些因素。 遇到这种情况时,可以在这一点上考虑最佳选择。 本文介绍了以下两个要素。 每个元素都会影响内存页面的大小
页面大小过小会增加页面表中的条目,并增加寻址时TLB(Translation lookaside buffer )的搜索速度和开销
页面大小过大会浪费内存空间、内存碎片和内存利用率降低
在上个世纪设计内存页大小时,我们充分考虑了上述两个因素,最终选择了4KB内存页作为操作系统最常见的页大小,现在我们将详细讨论它们对操作系统性能的影响。
为什么Linux需要虚拟内存的文章介绍了Linux的虚拟内存,每个进程都能看到独立的虚拟内存空间,虚拟内存空间是一个逻辑概念,进程还需要访问对应于虚拟内存的物理内存
为了在64位操作系统中存储128 TiB虚拟存储器的映射数据,Linux在2.6.10中引入了4层的页表辅助虚拟地址转换[^2],在4.11中引入了5层的页表结构[^3],将来还将支持64位虚拟地址.
文/上海蓝盟 IT外包专家