new / malloc が使用されるたびに、OS はページ サイズに合わせて新しい (または再利用する) ヒープ メモリ セグメントを作成し、それを呼び出しプロセスに返します。これらの割り当てはすべて、プロセスの仮想メモリを構成します。32 ビット コンピューティングでは、どのプロセスも 4 GB までしかスケーリングできません。ヒープ割り当てが高いほど、プロセス メモリの増加率が高くなります。多くのメモリ管理/メモリ プールが利用可能ですが、これらのユーティリティはすべて、ヒープを作成して効率的に再利用することになります。
一方、mmap (メモリ マッピング) は、ファイルをメモリ ストリームとして視覚化する機能を提供し、プログラムがファイルに対して直接ポインタ操作を使用できるようにします。しかしここでも、mmap は実際にはプロセス空間内のアドレスの範囲を割り当てています。したがって、サイズが 3GB の 3GB ファイルを mmap し、プロセスの pmap を取得すると、プロセスによって消費される合計メモリが >= 3GB であることがわかります。
私の質問は、[ファイルを mmap するのと同じように] ファイル ベースのメモリ プールを持つことは可能ですが、プロセス メモリ空間を構成するものではありません。ファイルに支えられたメモリDBのようなものを視覚化します。これは、読み取り/書き込みが非常に高速で、ポインター操作をサポートします[つまり、レコードへのポインターを取得し、new / mallocを使用しているかのように何でも保存します]。プロセスの仮想 4GB 制限に触れることなく、ディスク上で拡張できます。
出来ますか ?もしそうなら、私が仕事を始めるためのいくつかの指針は何ですか. 既製のソリューションやリンクを求めているのではなく、それを実現する方法を概念的に理解することを求めています。