0

簡単な質問があります:

3GB の空き領域を使用して、仮想メモリや圧縮なしで約 30 GB のデータにアクセスするにはどうすればよいでしょうか? それはデータ構造の質問です。

ありがとう

4

2 に答える 2

3

ページングメカニズムを何らかの方法で模倣する必要があります。

それを行う 1 つの方法は、ハッシュ1です。

すべてのデータをビンにハッシュし、これらのビンをディスクに保存します。メイン メモリ (RAM) には、ディスクへのポインタの配列のみを保持します。アドレスが必要になったら、RAM にアクセスしてその場所からポインタを取得することで、ディスク上の場所がわかります。hash(address)

もちろん、局所性の原則を使用してデータの一部をメモリに保持するように最適化し、ヒットを期待して、ディスクからチャンクをリロードしないようにすることもできます。


(1) ハッシングは、複雑である必要も、均一に分散されている必要もありません。アドレスの MSb を使用しても問題ないと思います。実際、ページング メカニズムをよりよく模倣します。

于 2012-11-26T07:14:35.687 に答える
0

最も明白な方法はread、 、write、およびseek関数を使用した典型的なファイルシステム API を使用することです。

于 2012-11-26T07:13:47.910 に答える