問題タブ [virtual-memory]
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.
linux - Linux でメモリ マップ領域が縮小するのはなぜですか
この領域は動的にロードされるライブラリのようにファイルをマップするため、これを考慮してください。理想的には大きくなるはずです。これは、RLIMIT_STACK とヒープ開始の間の mmap 領域を開始することで実装できます。この場合、どのような問題が発生しますか。
それが成長した場合、新しいメモリマップ領域はどのように作成されますか。abc.so のコードを仮想アドレス空間にマップしたい場合、sizeof(abc.so) 空間を下方向に作成し、この領域の下部からファイルをマップする必要があります。これはどのように機能しますか?
linux - プロセス全体の仮想アドレス空間がページに分割されている
注:仮想メモリ割り当ての概要を調べようとしています。
プロセス全体の仮想アドレス空間は、特定のサイズのページに分割されています:
これにはヒープスペースとスタックも含まれますか?それとも常にページング不可ですか?
compilation - RVAとVAとは何ですか?
RVAとVAの意味を説明してください
memory-management - 「32ビットOS」、「32ビットプロセッサ」:これらの用語は正確にはどういう意味ですか?
「32ビットOS」、「32ビットプロセッサ」の正確な意味は何ですか?
- アドレスバスのサイズに影響しますか?
- 生成できる仮想アドレスの数に影響しますか?
- レジスタサイズにどのように影響しますか?レジスタサイズはどういう意味ですか?
- 仮想メモリ/メモリ管理にどのような影響がありますか
私はこの分野の初心者です。もしあれば、いくつかの適切なドキュメントを教えてください。
ありがとう。
security - 他のプロセスのメモリにアクセスするにはどうすればよいですか?
あるプロセスが他のプロセスのメモリを読み取ることはできないと思いました。しかし、 「RAM エディター」を備えた「 WinHex 」という名前のアプリケーションを見てショックを受け、メモリ全体にアクセスできるようになりました。すべてのプロセスの。
そんなことがあるものか?また、他のプロセスのメモリを変更することもできます。これは悪意にはなりませんか?
linux - どのLinuxがプロセスメモリをRAMからスワップファイルにスワップするかに基づく正確な条件は何ですか?
私のサーバーには8GigのRAMとスワップファイル用に構成された8Gigがあります。メモリを大量に消費するアプリを実行しています。これらのアプリの負荷はピークに達し、その間にスワップの使用量が増加します。約1GIGのスワップが使用されます。
4ギガのRAMと8ギガのスワップを備えた別のサーバーと同様のメモリを大量に消費するアプリが実行されています。しかし、ここではスワップの使用はごくわずかです。約100MB。
LinuxがRAM内のプロセスメモリをスワップファイルにスワップアウトする正確な条件や大まかな式は何でしょうか。私はそれがスワッピングファクターに基づいていることを知っています。それは他に何に基づいていますか?ファイルサイズを入れ替えますか?これを説明するLinuxカーネルのドキュメント/ソースコードへのポインタは素晴らしいでしょう。
memory-management - シーケンシャル書き込みとランダム書き込みの違い
次の場合のシーケンシャル書き込みとランダム書き込みの違いは何ですか:- 1) ディスク ベースのシステム 2) SSD [フラッシュ デバイス] ベースのシステム
アプリケーションが何かを書き込み、情報/データをディスク上で変更する必要がある場合、それがシーケンシャル書き込みかランダム書き込みかをどのように知ることができますか。この時点まで、書き込みは「シーケンシャル」または「ランダム」として区別できません。書き込みはバッファリングされ、バッファをフラッシュするときにディスクに適用されます。
間違っている場合は修正してください。
.net - VMの断片化を判断するための.NETAPI
VMの使用に関する詳細情報を取得するための.NETAPIはありますか?私は自分のアドレス空間がどれほど断片化されているかを判断することに特に興味があります。
ありがとう!
c - malloc はマシンごとに異なる動作をします
さまざまなマシンで RSS を超えようとするプログラムを実行すると、まったく異なる動作が見られます。コードは次のようなものです。
上記のコードは、malloc を使用して約 10GB のメモリを割り当てようとします。このコードを試した最初の 2 台のマシンは Linux カーネル 2.6 で実行され、最後のマシンは Linux カーネル 2.4 で実行されました。これらのマシンで見られる動作は次のとおりです。
マシン 1: メモリはメモリ オーバーコミットを使用して割り当てられますが、while ループでメモリ位置に値を割り当てる場合、RSS が許可する範囲でしか割り当てられません。したがって、OOM Killer は、i=3800 が出力されるとプロセスを強制終了します。これは、このマシンが持つ約 4GB のメモリです。
マシン 2: メモリ オーバーコミットを使用してメモリが割り当てられ、while ループが無限に続き、仮想メモリからページが割り当てられます。i = 3800 が出力された後、プロセスは少し遅くなりますが、これは正常です。
machine3: このマシンには 2GB のメモリしかありません。メモリを割り当てることさえできません。オーバーコミットが設定されていないか、カーネル 2.4 が malloc! を使用した仮想マシン ページの割り当てをサポートしていないようです。したがって、最初の for ループでは、i = 2138 にメモリを割り当てながら終了します。
私の望むアクションは、machine2 で起こっているアクションです。OSがmallocを使用して仮想メモリページを割り当て、必要なメモリがRSSを超えている間にページングを開始できるようにするには、どの(カーネル?)オプションを設定する必要があるか知っていますか?
ありがとう
c - Linuxカーネルモジュールで実行可能ページを割り当てる方法は?
Linuxカーネルモジュールを作成していますが、実行可能ページを割り当てたいと思います。Plainkmalloc()
は実行不可能なページ内にポインタを返し、そこでコードを実行するとカーネルパニックが発生します。Ubuntu Karmic x86、2.6.31-20-generic-paeで動作する必要があります。