在x86体系结构中,“扩展分页”允许页帧(物理内存)为4MB而不是4KB。
“理解Linux内核,第3章”第2章“内存寻址”一书“Linux中的寻呼”一节“内核页表”解释说,对于RAM小于896 MB的最终内核页表:
...内核可以通过使用大页面来处理内存(请参阅本章前面的“扩展分页”一节)。
然而,在“扩展寻呼”一节(“硬件分页”)中写着:
扩展分页与常规分页共存。
实际上,我不明白扩展分页和常规分页是如何共存的。请有人解释一下这些问题:
发布于 2018-09-19 06:12:41
应用程序可以申请巨大的页面,除非将PAGE_SIZE编译到内核源代码中,否则内核不会确定页面大小。使用mmap标志可以确定应用程序源代码中的页大小。
kmalloc在Linux内核中使用默认页面大小,即内核中的PAGE_SIZE,这是编译或运行时确定的。vmalloc也一样。
浪费内存的大小由PAGE_SIZE决定,如果页面大小为4MB,数据为5MB,则浪费内存大小为(PAGE_SIZE*N) - 5MB= 3MB。
https://unix.stackexchange.com/questions/40681
复制相似问题