gpt4 book ai didi

c++ - 虚拟内存地址在哪里?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:39 31 4
gpt4 key购买 nike

我知道如果页面不在主内存中,CPU 会从交换文件中获取它。因此,如果虚拟地址没有对应的物理地址,CPU 将从磁盘中获取它。所以映射到虚拟地址可以在两个地方之一:它在物理内存中或在磁盘中。我的问题是虚拟地址本身在哪里?因为 CPU 需要这个虚拟地址才能执行映射。 CPU从哪里得到这个地址?当我们使用 gdb 查看虚拟地址空间时,gdb 将所有这些虚拟地址放在哪里?

例如:

虚拟地址0x420000
页表 20
内存 0x800000

此处 20(页表条目)驻留在 RAM 中。0x800000(物理地址)驻留在 RAM 中。0x420000 信息存放在哪里? CPU 需要从某处获取此信息,否则它将如何执行地址转换?

现在我想我知道虚拟地址信息是从哪里来的了。它来自应用程序本身,来自 pc 计数器,此时它将它传递给 CPU,然后 CPU 进行翻译。

最佳答案

有关虚拟页面的信息(它们的状态、物理位置等)存储在page table中。 .页表本身的实现方式和存储位置在很大程度上取决于操作系统和底层硬件支持的具体情况。尽管一开始听起来很棘手,但页表本身甚至可以存储在虚拟内存中。

关于c++ - 虚拟内存地址在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19687787/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com