使用硬盘快速访问RAM

时间:2015-08-14 11:38:05

标签: c++ c linux memory

我一直在具有高内存(128GB RAM)的计算机上运行内存密集型C ++ Linux应用程序。此应用程序预先保留约20GB的内存,以便稍后用作缓冲区。我希望将这个应用程序移植到某种SBC,就像Raspberry Pi一样,我实际上没有内存可用(与通常情况相比)。我的思考过程是使用HDD(可能是SDD)而不是RAM来分配20GB的内存。有没有更有效的方法来做到这一点?此外,在这种方法中,我的实现应该是什么:只是二进制文件还是别的什么?

编辑:我可以将内存分配减少到不像2GB。尽管如此,我还没有在RPi中提供那种记忆。由于整个项目是将其移植到SBC,我需要使用硬盘空间来解决它。

1 个答案:

答案 0 :(得分:3)

我首先考虑使用mmap来映射文件,就像交换一样。

然后,rpi使用32位ARM,这意味着你不能同时拥有所有20GB的地址,所以你需要某种内存覆盖方法:

  1. 您的程序明确要求您的“内存控制器”切换/退出区域。
  2. 你采用了像lock-buffer这样的模式(类似于Direct3D所做的),并让“内存控制器”管理并进行交换。
  3. 总的来说,rpi不适合这项工作,你需要投入高昂的开发成本而不是简单地选择便宜的PC。