使用 3GB 可用空间访问 30 GB 信息,而无需虚拟内存分页



我有一个简短的问题:

我们如何在没有虚拟内存或压缩的情况下使用 3GB 可用空间访问大约 30 GB 的数据?这更像是一个数据结构问题。

谢谢

您应该以某种方式模仿分页机制。

一种方法是散列1

将所有数据散列到箱中,并将这些箱存储在磁盘中。在主内存 (RAM) 中,您将只保存指向磁盘的指针数组。一旦你需要一个地址,你就知道它在磁盘上的位置,通过访问RAM并从位置获取指针hash(address)

您当然可以对其进行优化,以将部分数据保留在内存中 - 使用局部性原则 - 并希望受到打击 - 并避免从磁盘重新加载块。


(1)散列不必复杂或均匀分布。我相信使用地址的 MSb 会很好 - 并且实际上会更好地模仿分页机制。

最明显的方法是通过具有readwriteseek函数的典型文件系统 API。

最新更新