問題タブ [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.
memory - Linux の mmap() のように、Windows プラットフォームにメモリ マッピング API はありますか?
のように、メモリ マッピングを行うための API はありますか
Linuxで?
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?
c - MacOS X での mmap/munmap のパフォーマンスの向上
MacOS X マシンで次の C コード (2GB ファイル上の一連の mmaps と munmaps) を実行すると、Linux マシンよりも劇的に遅くなるようです。
具体的には、2 つのマシンを比較します。
次の結果が得られます
メモリの量が減ったことを考慮しても、ファイルが物理メモリの半分しかないことを考えると、これは珍しいことのようです。パフォーマンスを向上させる可能性のあるコードの変更または構成の変更を指摘できる人はいますか?
mmap の代わりに読み取りを使用してみましたが、かなりの違いがありますが、それを行うには、既存のコード ベースを大幅に変更する必要があります (そして、mmap は Linux での読み取りよりもはるかに高速です)。
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 ビット プロセスでメモリ マップ ファイルを作成する必要があることを意味しますか?
ありがとう
c - POSIX でのファイルのメモリ マッピング
システム内のファイルをメモリ マッピングするとき、 ed メモリ ブロックPOSIX
の処理が完了するまでファイル ディスクリプタを開いたままにしておく必要がありますか(およびその後)、またはファイル ディスクリプタが一度成功することができますか (すべきですか?) 。どちらも私の Linux システムで動作するようです。mmap
close
munmap
close
mmap
c - 同期された POSIX システム上のメモリ マップ ファイル
次のコードが正しく機能するのはなぜですか?
まず、追加された場合でも、ファイルは同期されたままになります (ファイルを外部で編集および保存すると、更新されたコンテンツが自動的に印刷されます)。マッピングしたバイト数 (初期ファイル サイズ) を超えてコードがセグメンテーション違反なしでアクセスできるようにするにはどうすればよいですか? mmap
常に長さをシステムページサイズに切り上げているためですか? もしそうなら、この動作は一般的なシステムに依存している可能性があります ( man ページPOSIX
でそのような要件を見つけることができませんでした)。mmap
第二に、どのようにしてテキストに ? が自動的に追加され'0'
ますか? マップされていないバイトが自動的にゼロになるためですか? この動作は依存できますか?
linux - mmapされた領域に関する情報を収集するためのLinuxAPIはありますか?
ファイルを読み取ることができることは知っています/proc/$PID/maps
が、プロセスメモリマッピングを取得するためのAPIがあるかどうか疑問に思っていました。
c++ - メモリマップされたフォーマットされたファイルから整数を読み取る
次のように、1行に1つの整数を含む大きなフォーマット(テキスト)ファイルをメモリマップしました。
したがって、最初のバイトにメモリへのポインタがあり、最後のバイトにメモリへのポインタもあります。私はこれらすべての整数をできるだけ速く配列に読み込もうとしています。最初に、std::istreamを操作してそのメモリから読み取るための特殊なstd::streambufクラスを作成しましたが、比較的遅いようです。
「1231232\r \ n123123 \ r \ n123 \ r \ n1231 \ r \n2387897...」のような文字列を配列{1231232,123123,1231,231,2387897,. ..}?
ファイル内の整数の数は事前にはわかりません。
c - mmap/mprotect-readonly ゼロ ページは、コミットされたメモリにカウントされますか?
以前に使用されていたが現在は必要ないメモリ用に、プロセスで予約された仮想アドレス空間を維持したいと考えています。ホスト カーネルが Linux であり、オーバーコミットを防ぐように構成されている状況に興味があります (これは、コミットされたすべてのメモリの詳細なアカウンティングによって行われます)。
アプリケーションが使用しなくなったデータが物理メモリを占有したり、ディスクにスワップされたりするのを防ぎたい場合 (いずれにしてもリソースを浪費する)、madvise
不要なカーネルを削除するか、そのmmap
上に新しいゼロ ページを重ねることができます。しかし、これらのアプローチのどちらも、コミット済みとしてカウントされるメモリの量を必ずしも削減するわけではなく、他のプロセスが使用できなくなります。
ページを読み取り専用としてマークされた新しいゼロ ページに置き換えるとどうなりますか? 私の意図は、それらがコミットされたメモリにカウントされず、後でmprotect
それらを書き込み可能にするために使用できること、およびそれらを書き込み可能にするとコミットされたメモリの制限を超えると失敗することです。私の理解は正しいですか?これは機能しますか?
linux - Apache モジュールでのメモリ マップ ファイルの過剰な同期
私は現在、大きな mmap ファイルを使用してプロセス間でデータを共有する Apache モジュールに取り組んでいます。これは起動時に作成され、サーバーのシャットダウン時に削除されます (後の段階で保持することを選択できます)。私は Apache APR ライブラリを使用してこれを実装しましたが、少なくとも小さなファイルの場合はうまく機能します。
ただし、メモリマップファイルのサイズが大きくなると(サーバーの実行中にキャッシュするのに十分なRAMがまだあります)、オペレーティングシステム(私の場合はLinux)が大量のファイルを消費しているように見えるため、システムが事実上停止することがありますファイルをディスクと同期します。この同期を制御/削減する方法はありますか?
現時点ではコンテンツをディスクに同期する必要がないので、代わりに共有メモリ セグメントを使用するべきだったので、代わりにそれを試してみます。ただし、メモリマップファイルの同期を制御する方法にはまだ興味があります。