虚拟地址空间是否驻留在虚拟内存中



虚拟地址空间是否驻留在虚拟内存中?我有一个困惑像,每个过程有自己的虚拟内存和页表,在将虚拟地址加载到物理内存时,会从虚拟地址转换为物理地址,但虚拟地址空间在哪里?我读过很多操作系统的书,但无论在哪里,它都只是对特定单词的解释,而不是它驻留在哪里,以及它们之间的关系和它的操作方式。请从理论上解释我,不需要举例。提前谢谢。

(虚拟)地址空间是给定地址宽度的允许地址集(x86上为2^32字节,x64上为2^ 64字节)。虚拟内存通常意味着几乎相同。它是某个进程或应用程序或整个系统的允许地址集。单个应用程序的虚拟内存最多可以与系统的虚拟地址空间一样大。每个应用程序只能"看到"操作系统分配给它的虚拟地址空间(由于一些欺骗,每个应用程序可能有一个相同大小的虚拟地址,并且总和可能大于系统的地址空间)。

物理内存(更正确的说法是:物理RAM),是指有效安装的RAM模块的数量。它通常小于虚拟地址空间。如果需要,操作系统会进行交换,将所需的内存页从硬盘带入物理内存。物理内存中的内存页具有物理地址和虚拟地址。普通应用程序只看到虚拟地址,它们不关心(也绝不能)内存页的物理加载位置。因此,在应用程序或调试器中看到的地址实际上是该应用程序的虚拟地址空间中的虚拟地址。只有当直接连接到硬件时才需要物理地址。如果操作系统决定这样做,它甚至可以不断地改变

希望这能让它更清楚一点。

我不是专家,但我认为虚拟寻址和分页是80386之后引入的cpu保护模式的一部分,它不是操作系统的一部分。操作系统控制页面表。例如,对于虚拟地址,它们只是可执行文件中的数字objdump -d将显示

最新更新