我用的是Linux操作系统下的gcc。我已经禁用了ASLR。现在,对于我所声明的数组,我得到的总是相同的虚拟地址。
现在,我的问题是,在我的程序执行期间,虚拟到物理地址的映射是否也是相同的,或者在我的程序执行期间,虚拟到物理地址的映射是否发生了变化?
我的问题的任何答案/指针都将不胜感激。提前谢谢。
发布于 2013-12-06 07:10:56
通常情况下,从虚拟地址到物理地址的映射在执行期间保持不变,几乎没有例外。例如,如果您的阵列所在的页成为交换到磁盘的牺牲品,则操作系统稍后可能会将其重新映射到另一个物理地址。
但是,为什么需要将阵列固定在物理内存中呢?你只能在内核中操作物理内存,如果你已经在内核中做了一些事情,你总是可以执行一次页面遍历来获得实际的和最新的翻译。
https://stackoverflow.com/questions/19950372
复制相似问题