gpt4 book ai didi

linux - 以编程方式检查内存页面状态

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:23 25 4
gpt4 key购买 nike

我想在大数组上实现插值搜索。一种可能的优化是首先访问已经加载到主内存中的内存地址(访问它们不会导致硬页面错误)。例如,如果我需要读取索引 X 处的数据,我可以检查该页面是否在主内存中,如果不在 - 我可以检查已经在内存中的相邻页面之一。

因此,我需要某种机制来检查地址 (X & 0xFFFFFFFFFFFE0000) 处的页面是否已加载(或未加载)。或者更好 - 我需要获取某个地址范围内的加载页面列表,或类似的东西。

是否可以在 linux 或 windows 上的用户空间代码中使用(应用程序是 crossp-latform)?此时我只是使用LRU缓存最近访问的内存地址,希望操作系统不会交换最近使用的内存页面。

最佳答案

在 Win32 API 中

查看 QueryWorkingSet 函数以查询进程的内存状态。

作为在物理内存上加载页面的有效方式,请参阅 PrefetchVirtualMemory

据我所知,与 Windows 和 Linux 兼容的最低级别的跨平台 API 是 POSIX 规范。

我还建议你看一下 numa Win32 内存函数和 intel 缓存行和 L2 内存操作码,这是一个非常棘手的东西,但它可以大大提高内存读/写的性能(如果这是主要目标).

关于linux - 以编程方式检查内存页面状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773920/

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