2016-07-06 11 views

答えて

1

ユーザレベルコード常にと表示されます。仮想のアドレスです。どのような物理アドレス(ある場合)を知る方法はありませんは、現在これらのアドレスの1つに対応しています。 「バーチャル」はそれが住む唯一の世界であり、それが今まで知っている唯一の世界です。プログラムの意図と目的のために、 "仮想現実です。"明確にするために

+0

私は質問内のリンクで画像を共有しました。あなたはそれについての見解を持って、ちょっと精巧にできますか? –

0

:(MS-DOSなどを除いて...)すべてオペレーティング・システム仮想メモリ空間で実行ユーザプログラム。各プログラムには、「位置$12345678に含まれるもの」という独自の認識があり、各プログラムの認識は、となります。各プログラムは異なる番号を持つことができ、それ自体の喜びで変更することができます。

それらのどれが実際に知っているので、彼らはこれを行うことができます:

  • 物理メモリで、 "その '場所$12345678'" は、実際に存在します。 物理アドレス$12345678である何(それがない...とかなり-おそらくそれはない!場合)

オペレーティング・システムは、物理RAMの組み合わせ(必要な場合)ページファイル及び/又はスワップ・ファイル・スペースを使用して、各プロセスの仮想メモリを維持します。プロセスによって積極的に使用されている情報は、それが不明な物理的なRAM上の場所で「必要に応じて」利用できるようになり、ableによって認識されます。最近使用されていない情報は最終的には物理RAMから "盗まれ"、再び参照されるまで外部ストレージに移動され、 "ページフォルト"と呼ばれるものがトリガされます。

デバッガによってあなたに与えられ、メモリビューは、によって知覚されるメモリの図であり、それはプログラムがデバッグされているために正しいです:仮想アドレスを、プロセスの仮想メモリに。

+0

プロセスの仮想アドレス空間に最大限の制限はありますか? Linux上でtopコマンドを使うときと同じように、プロセスの物理メモリと仮想メモリを表示します。 (これは変わり続ける)。プロセスの仮想メモリの変更方法 –

+0

アプリケーションプログラムは、特定のサイズの(仮想)メモリ領域が利用可能であると認識します。特定の場所にアクセスしようとするとページ違反が発生するかどうかは検出できません。 OSからこの情報を要求するシステムコールを行うだけで、その(仮想)メモリ割り当てのサイズを事前に決定できます。 –

+0

'top'コマンドから常に変化する値を見る理由は、OSの仮想メモリサブシステムの動作を見ることができるからです。現在の物理RAMのフットプリントとそれぞれのプロセスで使用されているスワップ/ページスペースの両方を、どのプロセスのサポートに費やしているかを確認することができます。これは、プロセスがどれくらいのRAMを持っているか(いわゆる "ワーキングセットサイズ")、実際にどれくらいのRAMが得られるかを見ることができます。待っている時間を見ることができます。プロセスは、物理RAMリソースと競合します。物理的な状況は常に1マイクロ秒ごとに変化します。 –

関連する問題