我有一个非常大的磁盘驱动器 (2TB),但不是很多 RAM (8GB)。我希望能够在我的磁盘文件系统上存在的一个大文件(~200GB)上运行一些大数据实验。我知道这在磁盘带宽方面会非常昂贵,但我不介意高 I/O 使用率。
如何将这个巨大的文件加载到 C++ 数组中,以便可以在我选择的位置对文件执行读写操作?mmap 是否适用于此目的?我应该使用哪些参数选项来执行此操作?我不想在运行程序的任何时候触发 OOM 杀手。
我知道 mmap 支持文件支持和匿名映射,但我不完全确定使用哪个。使用私有映射与共享映射之间怎么样?