为什么运行中的物理地址是相同的?

时间:2016-10-21 11:28:48

标签: linux operating-system paging

我正在使用某个数组变量运行程序。我正在使用Linux系统(ubuntu)支持的/ proc / self / pagemap文件将此阵列的虚拟地址(VA)转换为物理地址(PA)。我尝试通过多次运行相同的程序来观察VA-PA映射(连续运行之间的时间间隔)。我观察到的是PA在所有运行中保持不变。

如果VA保持不变是合理的,但为什么PA也保持不变。 PA取决于操作系统维护的RAM中可用的空闲页面。它必须在那一刻改变系统负载。考虑到所有这些,我期待PA变化,但是,我观察到的相反。

我对OS / Architecture缺少什么概念来回答这个问题?

1 个答案:

答案 0 :(得分:3)

  

“有时间差”

操作系统希望应用程序想要重新启动 - 所以如果内存不是短路的,那么内存将是“空闲的”,它也会将二进制文件缓存,以防它再次运行。 Windows任务管理器报告相当不错。

单独的时间不足以释放这个缓存,并且启动其他几个应用程序也可能是不够的;你需要启动一些独特的进程(或只是一个使用大量内存的进程)来清除缓存。

或者,正如acornagl所指出的那样,可以按照发布的here

指示手动清除缓存。