内核虚拟内存空间和进程虚拟内存空间

问题描述 投票:0回答:1

[我在阅读第9.7.2章:Linux虚拟内存系统(第三版)中讨论虚拟内存的教科书:《计算机系统程序员的观点》。

我为Linux进程的虚拟内存结构感到困惑,如下所示:

memory schematic

我的问题是:内核虚拟内存是否保留供内核运行和其余的虚拟内存保留给用户进程?内核代码和数据做什么?内核虚拟内存中的物理内存又是什么?

memory memory-management linux-kernel virtualization
1个回答
0
投票

是否为内核运行保留了内核虚拟内存,而为用户进程保留了其余的虚拟内存?

是的,虚拟内存的一部分始终为内核保留,另一部分留给用户空间进程使用。每个进程都有自己的虚拟内存,但是内核始终映射在虚拟内存的较高部分(较高地址)。此映射是否对进程可见取决于内核页表隔离。

另请参见:Do the virtual address spaces of all the processes have the same content in their “Kernel” parts?

内核代码和数据做什么?

部分高虚拟内存是实际内核映像的直接映射。也就是说,内核可执行文件及其所有数据。您可以在内核文档的this page中更详细地看到它,标记为“内核文本映射,映射到物理地址0”

另请参见:What's the use of having a kernel part in the virtual memory space of Linux processes?

以及内核虚拟内存中的物理内存是什么?

图像的那部分完全是误导的。我不确切地知道这本书的作者试图传达什么信息,但是物理内存绝对是内核虚拟内存的一部分。物理内存是指系统(即RAM)的real内存。虚拟内存的每个区域都映射到物理内存的某个区域。这种虚拟到物理的映射对进程是完全透明的,并由内核管理。例如,以只读模式打开的具有相同文件的两个可执行文件通常共享相同的physical内存区域,同时看到两个不同的virtual地址。这是对虚拟内存和物理内存之间关系的更准确描述:

virtual memory mapping

来源:https://computationstructures.org/lectures/vm/vm.html

© www.soinside.com 2019 - 2024. All rights reserved.