进程的较高虚拟内存地址(内核映射)用于什么?

进程的较高虚拟内存地址(内核映射)用于什么?

我对 Linux 进程的更高虚拟地址的内核映射有一些疑问:

  1. 它是否映射到存储在 RAM 中的内核文本段(我读到vmlinuz将被提取到 RAM)?

  2. 它有什么用呢?

  3. 进程的pmap表示它映射到 exe 的段、共享内存、堆栈、堆。我还可以看到映射的更高地址内核吗?

答案1

它有很多用途,包括映射内核二进制文件。 x86-64 映射是记录在内核中,并显示 0xffffffff80000000 处的内核文本映射(对应于vmlinuz)。其他用途包括内核进行的内存分配以及物理内存的完整映射。

除了遗留的 vsyscall 映射之外,为内核分配的地址空间不会显示在进程的映射中。事实上,对于 KPTI,当处于用户模式时,绝大多数内核根本没有映射到内存中。

也可以看看地址空间中的Kernel空间是通过什么为我们保留的?以及那里链接的其他问题。

相关内容