0

我有一个快速的问题:

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

谢谢

4

2 回答 2

3

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

一种方法是散列1

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

您当然可以优化它以将部分数据保留在内存中 - 使用局部性原则- 并希望获得成功- 并避免从磁盘重新加载块。


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

于 2012-11-26T07:14:35.687 回答
0

最明显的方法是通过带有 、 和 函数的典型文件read系统writeAPI seek

于 2012-11-26T07:13:47.910 回答