gpt4 book ai didi

c - 在 C 中分配大内存块时避免分页?

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:11 26 4
gpt4 key购买 nike

我正在使用需要使用大内存块的 Barnes-Hut 算法在 C 中编写 N 体模拟。我追求速度和效率。有什么方法可以保证这些内存块将保留在 RAM 中而不被分页到硬盘驱动器?

编辑:我想分配多达 2GB 的内存,但可以想象我最终可能会运行一些具有更多内存的模拟。

编辑:解决方案应该支持 Windows7(可能是 Windows8 出来的时候?)和 Ubuntu

最佳答案

有一些操作系统原语可以做你想做的事:mlock在 Unix 上(Ubuntu 只是其中一个例子¹),以及 VirtualLock在 Windows 上。 (忽略评论中关于 VirtualLock 确切语义的争论;它们与您的用例无关。)

Unix 原语在调用进程中需要 root 权限(一些系统允许在没有权限的情况下锁定一小部分内存,但您想要的远不止于此)。 Windows 原语似乎不需要特殊权限。

¹“Linux 不是 UNIX”的反对意见被记录下来,并带有偏见地被忽略了。

关于c - 在 C 中分配大内存块时避免分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12666179/

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