これはばかげた質問かもしれませんが、たとえば、2 GB のコンピューターで 2.1 GB の RAM を占有する非常に大きなアレイを使用している場合、必要に応じてハード ドライブから余分な 0.1 GBを借りる方法はありますか?
3 に答える
お使いのオペレーティングシステムはすでにそれを行っています(Windows、* nix)。これは仮想メモリと呼ばれます。
はい。これは仮想メモリの一部であり、具体的にはスワッピングです。最近のほとんどのオペレーティングシステムは、プログラマーが心配することなくこれを実行します。
物理RAMが使い果たされると、ハードディスクは追加メモリとして使用されます。ハードディスクのアクセス時間(ミリ秒)はDRAMのアクセス時間(ナノ秒)の100万倍のオーダーであるため、これは非常に低速です。
可能であれば、RAMを増やすことをお勧めします。
他の人が「はい」と述べているように、システムにはすでに仮想メモリがあります。
ただし、これを別の方法で利用できます。メモリ マップ ファイルを使用して、システムがアレイをディスクに直接マップできるようにすることができます。
メモリ (アレイ) に書き込むときにこの方法を使用すると、システムは仮想メモリ管理システムを使用してディスクを使用します。これは、OS が行う標準の VMM とどのように異なるのでしょうか? 利点は、標準のスワップ スペース (Windows のページ ファイル) を使用しないことです。そのため、スペースは「メモリ」であり、システムの残りの部分が使用できます。
依然として大量のリソースを使用していますが、スワップ スペースを解放することで得られ、事実上、より多くの仮想メモリを借りることができます。得られるその他の利点は、データの重複がないことです。すなわち。大規模なデータセットをロードしている場合は、ディスク領域をメモリにマップし、書き込みの場合はその逆を行うだけです。