Linux内核页表更新

dae*_*hee 5 paging x86 kernel linux-kernel page-tables

在linux x86 中分页。

  1. 每个进程都有自己的页面目录。

  2. 页表遍历从 CR3 指向的页目录开始。

  3. 每个进程共享内核页目录内容

假设三个句子是正确的,假设某个进程进入内核模式并更新其内核页目录内容(地址映射、访问权限等......)

问题。由于内核地址空间在进程之间全局共享,因此此更新必须与其他进程的页目录同步,对吧?

如何管理?

Cra*_*son 0

当内核更改页表条目时,必须以原子方式进行这些更新:

在64位内核中,可以使用64位内存操作方便地完成此操作,而i386则需要使用CMPXCHG8。

来源

  • 这并不能回答问题。他询问更改如何反映在所有进程页表中,因为它们都有内核映射。 (2认同)