問題タブ [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.
permissions - ページ テーブルを超える仮想メモリ
私は、メニーコア (1000+) チップ用の OS を開発する研究プロジェクトに取り組んでいます。コア間でメモリを安全に共有できるメモリ許可 (読み取り/書き込み/実行) 用の仮想メモリ タイプ システムの実装を検討しています。
基本的に、「ページ」を別のコアのサブセットによって読み取り可能であるとマークできるシステムが必要です...など。(少なくとも現時点では) アドレス変換を行う予定はありませんが、アクセス許可を効率的に設定およびクエリする方法が必要です。シンプルなTLBスタイルのキャッシュを備えたソフトウェアで満たされたデータ構造になります。
私たちの直感では、コアごとに単純にページ テーブルをレプリケートするだけでは (メモリ使用量の点で) コストがかかりすぎます。
この種の問題にはどのようなデータ構造が効率的でしょうか?
ありがとう
kernel - カーネル設計における「跳ねるカーネルに従う」手法
こんばんは。上記のテクニックの詳細を知りたいです。主な目標は、ユーザー アプリケーションが 4GB の仮想メモリ空間をすべて使用できるようにすることです。今のところ、すべてのユーザー アプリケーションには、仮想メモリ レイアウト内のカーネル データ構造に関する多くの読み取り専用情報があります。残念ながら、Google は「バウンスするカーネルをたどる」についてはあまり役に立たなかったので、この手法に一般的な名前があるのか、それとも何についてのものなのか知りたいです。
windows - メモリ リークとユーザー エクスペリエンスの低下
アプリケーションの 1 つで大量のメモリ リークが発生しました。メモリ リークが発生すると、コンピュータの動作が非常に遅くなります。リークを修正する前に、なぜそれが起こるのかを理解したいと思います。
たとえば、リークのある次の小さな C++ コードを見てください。
仮想メモリ、ディスク キャッシュなどに関する私の理解から、上記のコードが最後の行でユーザー入力を待機している間、その 1 ギガバイトのバッファーはもう使用されていないため、オペレーティング システムは徐々にそれをスワップする必要があると予想します。ディスクを「忘れる」。私 (ユーザー) はしばらく速度が低下しますが、しばらくすると正常に戻ります。
これは、私のシステム (Windows XP、32 ビット、2 GB の RAM) では発生しません。上記のコードを実行すると (cmd
使用可能なすべてのメモリを浪費するために、2 つの別々のウィンドウで 2 回)、システムの速度が大幅に低下したように感じます。数分後には良くなりますが、最大のパフォーマンスには近づきません。リークしている「アプリケーション」を終了すると、システムは正常に戻ります。
いくつかの数値を示すために、いくつかのソース コードのコンパイルをパフォーマンス テストとして使用しました。いくつかの測定(秒単位)を行うために、連続して数回コンパイルしました。
- リーク前: 14、2、2、3、2、...
- リーク後: 183、40、9、7、9、...
- リークしている「アプリケーション」を閉じた後: 12、2、2、...
私が何も期待しないところで3倍の減速。これはどのように説明できますか?
memory - ファイル システム - メモリ マップト ファイル
私のオペレーティングシステムクラスの最後の質問の例:
ほとんどのオペレーティング システムは、「メモリ マップ ファイル」をサポートしています。これは、実行中のプロセスのアドレス空間にマップされるファイルを表します。ファイルへの読み取りと書き込みは、メモリの読み取りと書き込みに変換されます。map() と unmap() という 2 つの新しいシステム コールの存在を想像できます。
a) map(); を検討してください。ファイル名と仮想アドレスを受け入れ、オペレーティング システムが仮想アドレスから始まるアドレス空間にファイルをマップするようにします。この呼び出しをサポートするために仮想メモリ システムを使用する方法を説明してください。
b) unmap(); を検討してください。仮想アドレス空間からファイルの関連付けを解除します。このシステム コールを実装するために取得する必要がある統計を記述します。すべての仮定をリストします。
c) 多くの UNIX システムでは、inode はディスクの先頭に保持されます。別の設計では、ファイルの作成時に i ノードを割り当て、その i ノードをファイルの最初のブロックの先頭に配置します。この代替案の長所と短所について話し合います。
d) 空きディスク ブロックに関する情報を含むビットマップまたは空きリストがクラッシュにより完全に失われた場合はどうなりますか? この災害から回復する方法はありますか、それともディスクが使用できなくなりましたか。UNIX および FAT スタイルのディスク ブロック割り当てについて、あなたの答えを議論してください。
これらの質問に関する議論の情報は大歓迎です。
performance - Windows 7 での仮想メモリ管理
このトピックに関して、technet で次の記事を見つけました。
http://technet.microsoft.com/en-us/magazine/ff382717.aspx
Microsoft には、さまざまなマニュアル ページ ファイル構成のベンチマークがありますか?
誰かが私に、OS のドライブに 4.5 Gig などの追加のパーティションを作成し、OS で最初のパーティションを無効にしながらページファイルをこのパーティションに移動することをお勧めします。さらに、ページ ファイルのサイズを手動で 2 / 2 ギガに制限することをお勧めします。
私の目には、これは意味がありません。誰かがこれについてコメントできますか?
operating-system - 仮想メモリが制限される要因は何ですか?
私が知っているのは、仮想メモリのサイズはアドレス行の数によってのみ制限されるということです。しかし、William Stallings による Operating System internals and design principalsでは、仮想メモリもセカンダリ メモリのサイズによって制限されることを読みました。
1.どうやって?
2.スワッピング(主記憶と副記憶)は仮想記憶の必要条件ですか? つまり、スワッピングが許可されていない場合でも、メリットは限られますが、仮想メモリと呼ぶことができますか?
次に、回答に基づいていくつかのフォローアップの質問があります。
編集:
私は本の正確な言葉を引用したに違いないと思う:
セカンダリ メモリがメイン メモリの一部であるかのようにアドレス指定できるストレージ割り当て方式。プログラムがメモリを参照するために使用するアドレスは、メモリ システムが物理ストレージ サイトを識別するために使用するアドレスとは区別され、プログラムによって生成されたアドレスは、対応するマシン アドレスに自動的に変換されます。仮想記憶域のサイズは、主記憶域の実際の数ではなく、コンピューター システムのアドレス指定方式と使用可能な 2 次メモリの量によって制限されます。
ここで「仮想メモリ」と「仮想ストレージのサイズ」には、ある種の言葉遊びがありますか?
windows - ロックされたページがワーキング セットのサイズにカウントされないのはなぜですか?
VirtualLock
WinAPI 呼び出しの目的は、ページをプロセスのワーキング セットにロックすることです。ただし、WorkingSet64
不可解なことに、API はそれらのページをカウントしません。
おそらくこの結果として、プロセス エクスプローラーも標準のタスク マネージャーも、プロセスごとのメモリ使用量統計でロックされたページをカウントしません。
これどうしたの?WinNT の仮想メモリに精通している誰かが、この不一致に光を当てることができますか?この不一致により、使用されている数ギガバイトの RAM が本質的に検出されない可能性があります。(SQL Server または VirtualBox を考えてください)
c - ページ仮想メモリを理解するための最初のステップ: 最初のページ フォールト時のページ テーブル エントリの作成
仮想メモリのページングを理解しようとしています。プロセスの最初のステップを表す次のコード スニペットがあります。ここでsearch_tbl
は、提供された論理アドレスを物理メモリ内の場所にマップするエントリがページ テーブルに既にあるかどうかを確認するために、各論理アドレスのメイン プログラムから呼び出されます。vfn
仮想フレーム番号です。
編集済み: この実装は意味がありますか? それとも間違った道を進んでいますか?
どんな助け/提案も大歓迎です。ありがとうございました。
android - Android 仮想メモリとページング
誰でもAndroidメモリ管理へのリンクを詳しく説明したり提供したりできますか。Android の仮想メモリ スキームについて混乱しています。Androidでページングはどのように行われますか? ハードディスクがない場合、どうやってそれを行うのですか? 彼らはキャッシングを持っていますか?