我很好奇x86_64 linux内核页面的大小。我听说它是4KB,但其他一些消息来源告诉它是2MB。
我也很好奇用户内核页面大小是否可以与内核页面大小不同。linux可以使用2MB的内核页面和4KB的用户页面吗?
谢谢
发布于 2019-05-12 11:03:57
x86_64体系结构上的页面大小(与i386或IA-32相同,后者是该体系结构的32位版本)是4KiB。
您还将看到对2MiB的引用,因为这是x86_64体系结构中“巨大页”的大小之一,它还允许在某些情况下也在Linux中使用1 1GiB巨型页面。(32位变体i386或IA-32有4MiB大页面。)
此外,Linux内核有一个名为“透明的巨大页”的特性,在许多现代Linux发行版中通常默认启用它。每当进程分配更大的内存时,Linux内核可能会决定分配2MiB对齐的内存块,并设置页表来代替为进程分配巨大的页。但是,如果系统陷入内存压力,需要交换一些内存,它仍然能够将其分解为单独的页面,这样它就可以交换一些内存,并将其他内存保存在内存中。(在某些情况下,它还能够从包含单个页面的分配中重新组装透明的巨大页面。)
关于内核和用户空间,在如何设置页表方面有几个细微差别(安全特性,特别是在最近的安全问题(如谱和熔毁)之后引入的特性,试图将页表映射与内核和用户空间隔离开来。但是通常内核和用户空间都会以相同的方式访问相同的内存区域,例如,在内核模式下,巨型页面(透明的或其他的)也会使用巨大的页面映射。
https://unix.stackexchange.com/questions/518523
复制相似问题