mmapを使用して他のファイルのメモリサブセットを参照するファイルを作成できますか?

mmapを使用して他のファイルのメモリサブセットを参照するファイルを作成できますか?

私は2つのファイルを生成するプログラムを書くことに興味があります。 2番目のファイルは最初のファイルの「表示」になり、変更すると最初のファイルも変更されます。 mmapを使ってこれを行うことはできますか?

mmapを使用すると、RAMに共有メモリを持つことができますが、不揮発性メモリ(ハードドライブとも呼ばれます)に共有メモリが必要であることがわかります。ファイルが非常に大きい可能性があると仮定するため、最初のファイルをコピーしたりRAMに完全にロードしたりすることはできません(GB)。

2番目のファイルに最初のファイルメモリのサブセットを表示させる方法を見つけた後、3つのファイルを作成する予定でした。最初のファイルはコンテナで、2番目と3番目のファイルは最初のファイルの別のサブセットを表示しました。 2番目と3番目のファイルは、1番目のファイルコンテナが2番目と3番目のファイルを介してアクセスできるメモリに2つのファイルシステムを保持するようにファイルシステムを使用してフォーマットされます。 2番目と3番目のファイルをループバックデバイスに接続してマウントする方法でこれを行う予定です。

これは可能ですか?私が見ていないものがありますか?

ベストアンサー1

これを行うことはできませんが、mmap計画の最後に直接移動してループバックデバイスを使用できます。インクルード・ファイルでループバックが開始される場所を指定するオプションと、ループバックが終了する場所を指定するオプションがlosetupあります(開始基準).--offset--sizelimit

したがって、10GiBコンテナを使用すると、最初から2GiBファイルシステムを1GiBに「マッピング」できますlosetup --offset 1G --sizelimit 2G /path/to/container

おすすめ記事