Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么物理地址在运行中是相同的?_Linux_Operating System_Paging - Fatal编程技术网

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

Linux 为什么物理地址在运行中是相同的?,linux,operating-system,paging,Linux,Operating System,Paging,我正在运行一个带有特定数组变量的程序。我正在使用Linux系统(ubuntu)支持的/proc/self/pagemap文件将这个数组的虚拟地址(VA)转换为物理地址(PA)。我试着通过多次运行相同的程序来观察VA-PA映射(连续运行之间有时间间隔)。我所观察到的是,PA在所有运行中都保持不变 如果VA保持不变是合理的,但为什么PA也保持不变。?PA取决于操作系统维护的RAM中可用的空闲页面。此时必须根据系统负载改变wrt。考虑到所有这些,我期望PA会变化,但我观察到的恰恰相反 回答这个问题的操

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

如果VA保持不变是合理的,但为什么PA也保持不变。?PA取决于操作系统维护的RAM中可用的空闲页面。此时必须根据系统负载改变wrt。考虑到所有这些,我期望PA会变化,但我观察到的恰恰相反

回答这个问题的操作系统/体系结构我缺少什么概念

“有时间间隔”

操作系统希望应用程序重新启动——因此,如果内存没有不足,那么在内存“空闲”的同时,它也会缓存二进制文件,以防再次运行。Windows任务管理器很好地报告了这一点

光是时间不足以释放这个缓存,启动几个其他应用程序也可能不够;您需要启动许多独特的进程(或者只启动一个占用大量内存的进程)来清除缓存


或者,正如acornagl所指出的,可以按照发布的说明手动清除缓存

是否尝试启动其他程序并检查是否得到相同的结果?如果总是使用相同的内存布局,则不需要使用不同的物理地址空间(但取决于操作系统的实现),程序的大小也会影响其放置位置。也许当它足够小的时候,你就占据了其他通用工具无法占据的空间。然而,我要指出,习惯上把评论的贡献归因于评论。例如,“正如@acornagl所指出的,您可以通过……”手动清除缓存。博洛夫谢谢,我将从下次开始执行;)