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