【发布时间】:2017-01-25 13:09:18
【问题描述】:
我们看到任何指令对应的虚拟地址,所以我的问题是这些虚拟地址存在哪里?如果我们在 gdb 中看到反汇编,我们会看到这些地址所在的虚拟地址?请不要说它只是必须通过页表映射到物理地址的虚拟地址,我知道但我们在 gdb 中看到的这些虚拟地址存在于哪里?在 RAM 中还是在硬盘中?
【问题讨论】:
-
我不明白你在问什么,关于“居住”和“现有”的所有这些是什么 - 你是否期望所有可能的地址都有一个庞大的列表?
-
@harold 实际上我想知道虚拟地址的实际位置,它们是驻留在磁盘还是 RAM 中?
-
无论你把它们放在哪里。它们与其他类型的值没有什么不同。您可能会在寄存器、RAM 中有一些指针,也许其中一些 RAM 会被分页到磁盘中。不过,这是一个奇怪的问题。它与“数组索引所在的位置”相当。
-
@harold 数组索引将驻留在主内存中,但我们看到虚拟地址对应的指令如 mov,store。这些具有虚拟地址的指令驻留在哪里,我们在 gdb 中看到的所有指令是否都有物理框架?
-
哦,这就是你的意思。你的问题真的非常令人困惑。指令只是被执行的数据。包含指令的典型页面也可以被换出(内核中有一些页面必须永久驻留),但它们通常是可执行文件的内存映射页面,因此它会被删除,因为它已经存在于磁盘。该技巧不是为指令保留的。最后这实际上与地址无关..
标签: assembly operating-system paging virtual-memory memory-segmentation