【问题标题】:How different in management page table entries (PTE) in kernel space and user space?内核空间和用户空间的管理页表条目 (PTE) 有何不同?
【发布时间】:2013-05-19 13:49:49
【问题描述】:

在Linux操作系统中,启用页表后,内核只会将属于内核空间的PTE映射一次,而不再重新映射它们?此操作与用户空间中的 PTE 相反,每次进程切换发生时都需要重新映射?

所以,我想知道内核和用户空间中 PTE 管理的区别。

此问题是以下问题的扩展部分: Page table in Linux kernel space during boot

问候,

唐乐

【问题讨论】:

  • Linux self-map for page directoryLinux Virtual memoryKernel Doc on MMPIC for SO。对于某些条目,进程之间的用户空间映射可能保持不变;特别是共享库。如果是这种情况,VIVT 缓存对于这些区域可以保持未刷新。
  • 非常感谢天真的噪音 :)
  • 如果你理解这些链接,每个任务都有不同的PGD,但PTE值可能在进程之间共享,因此每个进程可以映射相同的大块内存;仅更新 顶级 目录(x86 上的 CR3,每个 CL)。

标签: linux-kernel


【解决方案1】:

每个进程都有自己的页表(尽管描述内核地址空间的部分是相同的并且是共享的。)

在进程切换时,CPU 被告知新表的地址(这是写入 x86 CPU 上的 CR3 寄存器的单个指针)。

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 2017-05-17
    • 2011-09-25
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多