我有一个简单的问题:
如何在没有虚拟内存或压缩的情况下使用3GB可用空间访问大约30 GB的数据?它更像是一个数据结构问题。
由于
答案 0 :(得分:3)
你应该以某种方式模仿分页机制。
一种方法是哈希 1 。
将所有数据散列到分档中,并将这些分区存储在磁盘中。在主内存(RAM)中,您只能保存一个指向磁盘的指针数组。一旦您需要一个地址,您就可以通过访问RAM并从位置hash(address)
您当然可以优化它以将部分数据保存在内存中 - 使用principle of locality - 并希望获得命中 - 并避免从磁盘重新加载块。 / p>
(1)散列不必复杂或均匀分布。我相信使用MSb的地址会很好 - 实际上会更好地模仿分页机制。
答案 1 :(得分:0)
最明显的方法是使用具有read
,write
和seek
函数的典型文件系统API。