問題タブ [mmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Linuxは仮想メモリ範囲を既存の仮想メモリ範囲にマッピングしますか?
Linux では、既存の仮想アドレス範囲をバックアップする物理ページに仮想アドレス範囲を (ユーザー空間で) マップする方法はありますか? mmap() 関数では、ファイルまたは「新しい」物理ページをマップすることしかできません。次のようなことができる必要があります。
c - スタックの一部をコピーし、mmap を使用して現在のプロセスにマップする
プログラムで次のことを行いたい:
- 新しいファイルを開きます。
- 現在のフレーム ポインター アドレスを含むスタックの (ページ整列された) 部分をファイルにコピーします。
- ファイルの内容をスタックの元の部分と同じ範囲内のプロセスのアドレス空間にマップして戻します。これにより、プロセスは、システムが最初に持っていたメモリ領域ではなく、スタックのその部分にファイルを使用します。スタック用に割り当てられます。
以下は私のコードです。mmap への呼び出し、特に mmap が vsyscall でシステム呼び出しを行う場所で、セグメンテーション違反が発生します。(Ubuntu Server (x86-64) で gcc 4.4.3、glibc 2.11.1 を使用しています。64 ビット構成と 32 ビット構成の両方でコンパイルして実行しましたが、結果は同じでした。
ありがとう!
c++ - メモリ マップト ファイルへの追加
株価情報 (int、long、double など) のファイルに常に追加しています。このファイルは、mmap を使用してメモリにマップされています。
新しく追加されたデータをメモリ マッピングの一部として利用できるようにする最も効率的な方法は何ですか?
ファイルを再度開いて(新しいファイル記述子)、mmapして新しいデータを取得できることは理解していますが、それは非効率的です。私に提案された別のアプローチは、ファイルを1MBのチャンクで事前に割り当て、最後に到達するまで特定の位置に書き込み、ファイルを+1MBにftruncateすることです。
他のアプローチはありますか?
ブーストはこれに役立ちますか?
linux - コピーオンライトページが実際のコピーかどうかを知る方法は?
mmap を使用してコピー オン ライト マッピング (MAP_PRIVATE) を作成すると、特定のアドレスに書き込むとすぐに、このマッピングの一部のページがコピーされます。プログラムのある時点で、どのページが実際にコピーされたかを把握したいと考えています。「mincore」と呼ばれる呼び出しがありますが、それはページがメモリ内にあるかどうかのみを報告します。これは、コピーされているページとは異なります。
どのページがコピーされたかを知る方法はありますか?
c - プロセス間の共有メモリと pthread_barrier: 安全にするには?
プロセス間の障壁に対するシンプルなソリューションが必要でした。ここに解決策があります:解決策
しかし、私は mmap で完全に迷っています...最初の試行では、10 回に 1 回失敗します (segfault またはデッドロック)。
問題の原因が同期の問題であることは理解していますが、それが見つかりません。mmaped メモリーをセットアップする例 ( example ) を見つけましたが、mmaped pthread_barrier に適しているかどうかはわかりません。
ここに私のコードの抜粋:
質問:
- mmapの初期化で何かが足りないのですか?
- どの操作をすべてのプロセスで実行する必要があり、どれを 1 つのみで実行する必要があるか?
新しい質問
pthread バリアを管理するのに安全なのはどれですか? それとも同じメカニズムに基づいているのでしょうか?
- シュムゲット
- shm_open
- mmap
- もう一つ
python - mmapping in Python C モジュール - 注意すべき落とし穴はありますか?
私は C で Python モジュールを作成しており、大規模なメモリ ブロック (おそらく 500 MB) を mmap するつもりです。Python インタープリターと同じプロセス空間で作業する場合に注意すべきことはありますか?
java - Javaメモリ割り当てプールアドレスを指定します
-Xms
およびオプションを使用すると-Xmx
、メモリ割り当てプールの初期サイズと最大サイズを設定できます。私が見つけたLinuxとAIXでstrace/trussを使用すると、JVMは内部で(k)mmapシステムコールを使用します。アドレス-ParameterはNULLであるため、オペレーティングシステムは、メモリをマップする仮想メモリアドレスを決定します。
このアドレスを指定することは可能ですか?
背景:Java Native Interface(JNI)を介してレガシーコードを呼び出す必要があります。これには、メモリ内の特定の場所にマップされた大量の再配置不可能なデータ(32ビットアドレス空間で2 GB)が必要です。この領域は、Javaのメモリ割り当てプールの場所と重複しています。
編集:これは実際のメモリレイアウトです:
私の目標は、Javaメモリ割り当てプールを0xb/0xcから0x3/0x4セグメントに移動することです。これは、標準(非大容量)メモリモデルでも使用できます。
python - Appengine で Pygeoip を使用する - mmap という名前のモジュールがない
次のように、Python Google Appengine で IP ルックアップを実行しようとしています。
(pygeoip はここにあります: http://code.google.com/p/pygeoip/ )
上記のコードはローカルで正常に実行されますが、ライブ サーバーにプッシュすると、次のエラーが発生します。
私はPython 2.5をローカルで使用しているので、ライブサーバーと同じであると思いますか?
Pygeoip ページには、次のように記載されています。
「サポートされているフラグ」が何を意味するのか正確にはわかりません-mmapが問題である場合、mmapの代わりにメモリキャッシュを使用してPygeoipを使用できますか? どうすればいいですか?
ありがとう!
トム
PS - まだ n00b のコーディングなので、簡単に行ってください :)
編集:
以下に概説する解決策は機能します。最初に次のコードを使用します。
次に、pygeoip 内のinit .py ファイルを次のように変更します (警告! コードの一部をコメントアウトしただけで、特別なことは何もしていません!!)
linux - データ チャンクを Linux PAGE_SIZE またはディスク ブロック サイズの 1/n に格納すると、mmap() はクラッシュ時にデータの整合性を保証できますか?
で実装されている、データの永続的で高速なリロードを備えたシステムを設計する必要がありますmmap()
。しかしmmap()
、単一ノードの MongoDB のように、永続化のために使用するシステムは、システム クラッシュ時にデータの整合性を失うことがよくあります。
私が持っているのは、保存する非常にフラットなデータ構造です。データは 1024 サイズのブロックにチャンクされ、ブロック間の依存関係はありません。ブロックは、サーバーのアップタイム中にランダムかつ頻繁にアクセスされ、更新されます。
c++ - mmap'ed ファイル経由の IPC: アトミックおよび/または揮発性を使用する必要がありますか?
プロセス間でデータを共有するために、mmap されたファイルを使用します。
コードは次のようになります。
質問は次のとおりです。
- volatile 修飾子 (
volatile int Data
) を使用する必要がありますか? - 共有データ ( ) に対してアトミック操作を使用する必要があります
__sync_fetch_and_add(&(shared->Data), 1)
か?
今後の参考のために: Volatile: Most Useless for Multi-Threaded Programming .