Linux中的页表存储在哪里?

Kin*_*red 5 linux virtual-memory linux-kernel

我想知道 Linux 在哪里存储页表。它在内核虚拟内存中吗?


这似乎与虚拟内存系统有关。但我是新手,所以如果我走错了方向,请告诉我。为了自己回答这个问题,我从一本书中读了几行说:

(23.2 第 8 页)

... Linux 虚拟地址空间由用户部分和内核部分组成...

...内核部分在进程间是相同的。

那么内核提供的地址空间在某种意义上是进程共享的空间吗?那么如果页表被放在内核虚拟内存中,这是否意味着进程可以共享它们的页表?


我读过的书:http : //www.ostep.org

Joh*_*éen 12

是的,页表存储在内核地址空间中。每个进程都有自己的页表结构,它的设置使得地址空间的内核部分在进程之间共享。然而,内核地址空间不能从用户空间访问。用户空间代码使用系统调用以受控方式与内核通信。系统调用成功后,处理器进入特权状态,此时内核地址空间可用。

  • 是的,所有进程共享内核的地址空间,但只有内核代码可以访问这部分内存。内核可以自由地用它做它想做的事,但内存不是在进程之间共享的,因为一个进程中的用户级代码可以自由地写入它而另一个进程读取它。内核 * 可以 * 设置要在进程之间共享的内存页面,但随后会使用非内核地址,因为内核地址对于非内核代码始终是不受限制的。 (2认同)