gpt4 book ai didi

page-tables - 页表在哪里?

转载 作者:行者123 更新时间:2023-12-03 16:05:32 26 4
gpt4 key购买 nike

我一直在研究分页和页表。我不明白页表的位置。
在堆栈交换(https://unix.stackexchange.com/questions/487052/where-is-page-table-stored-in-linux)的答案之一中,据说页表位于内核地址空间中,它位于虚拟内存中(据我了解)。
然而,在伊利诺伊大学 (https://courses.engr.illinois.edu/cs241/sp2014/lecture/09-VirtualMemory_II_sol.pdf) 的讲座幻灯片中,页表似乎在 RAM 中,这是物理内存。
谁能清楚地告诉我页表存储在哪里?

先感谢您。

最佳答案

这个问题的答案太笼统了,我认为它属于 super 用户堆栈交换。

在 x86 系统中,页表是 CPU 使用的结构,但它们太大而无法保存在寄存器中,因此它们保存在 RAM 中。

任何进程都有一个内存映射,其中有两个大区域:用户空间和内核空间。内核空间是所有进程的相同空间。用户空间是该进程的私有(private)空间。在基于 32 位 X86 的 Linux 系统上,任何等于或大于 0xC0000000 的逻辑地址都属于内核。在该地址下方,是用户空间。

进程的页表保存在内核空间中。内核在 RAM 中可能有多个页表,但只有一个是事件页表。在 x86 CPU 中,它是寄存器 CR3 指向的页表。

这里有更详细的解释它的工作原理:https://stackoverflow.com/a/20792205/3011009

关于page-tables - 页表在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619431/

26 4 0