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