問題タブ [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.

0 投票する
1 に答える
38728 参照

memory - Linux の mmap() のように、Windows プラットフォームにメモリ マッピング API はありますか?

のように、メモリ マッピングを行うための API はありますか

Linuxで?

0 投票する
1 に答える
536 参照

iphone - Can the unix api -mmap() work correctly on iphone os?

I need to know the feasibility of "mmaping" a virtualmemory and loading binary code into it and execute the binary code. The binary code (presented as shared library) may be mach format or elf format, which will be loaded into the memory through file-mapping way by our binary loade other than the apple's own unix binary loader.

Has someone tried it before? If you have any clue about that pls tell me, and we can discuss it more. By the way, does anyone know how to upload a shared library (not linked by app) to iphone simulator or device with iphone app developed together?

0 投票する
3 に答える
3352 参照

c - MacOS X での mmap/munmap のパフォーマンスの向上

MacOS X マシンで次の C コード (2GB ファイル上の一連の mmaps と munmaps) を実行すると、Linux マシンよりも劇的に遅くなるようです。

具体的には、2 つのマシンを比較します。

次の結果が得られます

メモリの量が減ったことを考慮しても、ファイルが物理メモリの半分しかないことを考えると、これは珍しいことのようです。パフォーマンスを向上させる可能性のあるコードの変更または構成の変更を指摘できる人はいますか?

mmap の代わりに読み取りを使用してみましたが、かなりの違いがありますが、それを行うには、既存のコード ベースを大幅に変更する必要があります (そして、mmap は Linux での読み取りよりもはるかに高速です)。

0 投票する
1 に答える
3197 参照

64-bit - 32 ビット プロセスと 64 ビット プロセス間でのメモリ マップト ファイルの共有

私の要件は、32 ビットと 64 ビットのプロセス間で共有メモリ ファイルを提供することです。このファイルは、誰が最初に来るかによって、どのプロセスでも作成できます。-これが可能かどうかはまだわかりませんが、可能であれば、後で落とし穴はありますか? - Google から入手した情報: メモリ マップ ファイル 32 ビット アプリケーションは、32 ビット仮想アドレス空間にマップされたメモリ マップ ファイルのみを共有できます。64 ビット アプリケーションは、32 ビットまたは 64 ビットの仮想アドレス空間でメモリ マップト ファイルを共有できます。64 ビット アプリケーションと 32 ビット アプリケーションの間で共有可能なメモリにファイルをマップするには、mmap(2) を呼び出すときに、64 ビット アプリケーションで MAP_SHARED フラグとともに MAP_ADDR32 フラグを指定する必要があります。URL: http://docs.hp.com/en/5966-9844/ch02s08.html#d0e3037

これは、この種の共有の場合、特定のフラグを使用して 64 ビット プロセスでメモリ マップ ファイルを作成する必要があることを意味しますか?

ありがとう

0 投票する
1 に答える
577 参照

c - POSIX でのファイルのメモリ マッピング

システム内のファイルをメモリ マッピングするとき、 ed メモリ ブロックPOSIXの処理が完了するまでファイル ディスクリプタを開いたままにしておく必要がありますか(およびその後)、またはファイル ディスクリプタが一度成功することができますか (すべきですか?) 。どちらも私の Linux システムで動作するようです。mmapclosemunmapclosemmap

0 投票する
3 に答える
520 参照

c - 同期された POSIX システム上のメモリ マップ ファイル

次のコードが正しく機能するのはなぜですか?

まず、追加された場合でも、ファイルは同期されたままになります (ファイルを外部で編集および保存すると、更新されたコンテンツが自動的に印刷されます)。マッピングしたバイト数 (初期ファイル サイズ) を超えてコードがセグメンテーション違反なしでアクセスできるようにするにはどうすればよいですか? mmap常に長さをシステムページサイズに切り上げているためですか? もしそうなら、この動作は一般的なシステムに依存している可能性があります ( man ページPOSIXでそのような要件を見つけることができませんでした)。mmap

第二に、どのようにしてテキストに ? が自動的に追加され'0'ますか? マップされていないバイトが自動的にゼロになるためですか? この動作は依存できますか?

0 投票する
1 に答える
2490 参照

linux - mmapされた領域に関する情報を収集するためのLinuxAPIはありますか?

ファイルを読み取ることができることは知っています/proc/$PID/mapsが、プロセスメモリマッピングを取得するためのAPIがあるかどうか疑問に思っていました。

0 投票する
4 に答える
1444 参照

c++ - メモリマップされたフォーマットされたファイルから整数を読み取る

次のように、1行に1つの整数を含む大きなフォーマット(テキスト)ファイルをメモリマップしました。

したがって、最初のバイトにメモリへのポインタがあり、最後のバイトにメモリへのポインタもあります。私はこれらすべての整数をできるだけ速く配列に読み込もうとしています。最初に、std::istreamを操作してそのメモリから読み取るための特殊なstd::streambufクラスを作成しましたが、比較的遅いようです。

「1231232\r \ n123123 \ r \ n123 \ r \ n1231 \ r \n2387897...」のような文字列を配列{1231232,123123,1231,231,2387897,. ..}?

ファイル内の整数の数は事前にはわかりません。

0 投票する
2 に答える
1911 参照

c - mmap/mprotect-readonly ゼロ ページは、コミットされたメモリにカウントされますか?

以前に使用されていたが現在は必要ないメモリ用に、プロセスで予約された仮想アドレス空間を維持したいと考えています。ホスト カーネルが Linux であり、オーバーコミットを防ぐように構成されている状況に興味があります (これは、コミットされたすべてのメモリの詳細なアカウンティングによって行われます)。

アプリケーションが使用しなくなったデータが物理メモリを占有したり、ディスクにスワップされたりするのを防ぎたい場合 (いずれにしてもリソースを浪費する)、madvise不要なカーネルを削除するか、そのmmap上に新しいゼロ ページを重ねることができます。しかし、これらのアプローチのどちらも、コミット済みとしてカウントされるメモリの量を必ずしも削減するわけではなく、他のプロセスが使用できなくなります。

ページを読み取り専用としてマークされた新しいゼロ ページに置き換えるとどうなりますか? 私の意図は、それらがコミットされたメモリにカウントされず、後でmprotectそれらを書き込み可能にするために使用できること、およびそれらを書き込み可能にするとコミットされたメモリの制限を超えると失敗することです。私の理解は正しいですか?これは機能しますか?

0 投票する
2 に答える
1090 参照

linux - Apache モジュールでのメモリ マップ ファイルの過剰な同期

私は現在、大きな mmap ファイルを使用してプロセス間でデータを共有する Apache モジュールに取り組んでいます。これは起動時に作成され、サーバーのシャットダウン時に削除されます (後の段階で保持することを選択できます)。私は Apache APR ライブラリを使用してこれを実装しましたが、少なくとも小さなファイルの場合はうまく機能します。

ただし、メモリマップファイルのサイズが大きくなると(サーバーの実行中にキャッシュするのに十分なRAMがまだあります)、オペレーティングシステム(私の場合はLinux)が大量のファイルを消費しているように見えるため、システムが事実上停止することがありますファイルをディスクと同期します。この同期を制御/削減する方法はありますか?

現時点ではコンテンツをディスクに同期する必要がないので、代わりに共有メモリ セグメントを使用するべきだったので、代わりにそれを試してみます。ただし、メモリマップファイルの同期を制御する方法にはまだ興味があります。