我想知道 Linux 在哪里存储页表。它在内核虚拟内存中吗?
这似乎与虚拟内存系统有关。但我是新手,所以如果我走错了方向,请告诉我。为了自己回答这个问题,我从一本书中读了几行:
(23.2 第 8 页)
... Linux 虚拟地址空间由用户部分和内核部分组成...
...内核部分在进程之间是相同的。
那么内核提供的地址空间在某种意义上是进程共享东西的空间吗?那么如果页表被放在内核虚拟内存中,这是否意味着进程可以共享它们的页表?
我想知道 Linux 在哪里存储页表。它在内核虚拟内存中吗?
这似乎与虚拟内存系统有关。但我是新手,所以如果我走错了方向,请告诉我。为了自己回答这个问题,我从一本书中读了几行:
(23.2 第 8 页)
... Linux 虚拟地址空间由用户部分和内核部分组成...
...内核部分在进程之间是相同的。
那么内核提供的地址空间在某种意义上是进程共享东西的空间吗?那么如果页表被放在内核虚拟内存中,这是否意味着进程可以共享它们的页表?
是的,页表存储在内核地址空间中。每个进程都有自己的页表结构,该结构的设置使得地址空间的内核部分在进程之间共享。然而,内核地址空间不能从用户空间访问。用户空间代码使用系统调用以受控方式与内核通信。在成功的系统调用之后,处理器进入一个特权状态,在这个状态下内核地址空间是可用的。