我有一个快速的问题:
我们如何在没有虚拟内存或压缩的情况下使用 3GB 的可用空间来访问大约 30GB 的数据?这更像是一个数据结构问题。
谢谢
您应该以某种方式模仿分页机制。
一种方法是散列1。
将所有数据散列到 bin 中,并将这些 bin 存储在磁盘中。在您的主内存 (RAM) 中,您将只保存一组指向磁盘的指针。一旦你需要一个地址,你就可以通过访问 RAM 并从该位置获取指针来知道它在磁盘上的位置hash(address)
您当然可以优化它以将部分数据保留在内存中 - 使用局部性原则- 并希望获得成功- 并避免从磁盘重新加载块。
(1) 散列不必复杂或均匀分布。我相信使用地址的 MSb 会很好 - 实际上会更好地模仿分页机制。
最明显的方法是通过带有 、 和 函数的典型文件read
系统write
API seek
。