1

これは、カーネルごとに編成されたプロセス メモリ レイアウトに関する私の理解をまとめた図です。理解したい

1) セグメンテーションとページングのプロセスはいつ行われますか? コンパイル時またはプログラム実行直後

2)任意のインスタンスで、プロセス内の特定のエンティティ(変数、オブジェクト)の物理アドレスにアクセスすることは何らかの方法で可能ですか

カーネルブックの理解にほとんど情報が見つかりませんでした。または、説明が私の理解とはかけ離れている可能性があります。よくわかりません。誰かがこれで私を助けることができるかもしれません

ここに画像の説明を入力

4

1 に答える 1

3

@Keen Learner、1)セグメンテーションとページングのプロセスは、プログラムが実行された直後に行われます。セグメンテーション違反は、プログラムに存在するコードの一部が、保護されたメモリまたはそのプロセス/仮想メモリ ブロックに存在しないメモリにアクセスしようとした場合にのみ発生します。すべてのプロセス関連ページを同時にメイン メモリに格納することはできないため、ページング プロセス。適切なページは、プロセスの実行中に適宜取り込まれるか、スワップ アウトされるだけです。2)私が知る限り、変数の物理アドレスにアクセスするメカニズム/手段はありません。これは、私たちが遊んでいるものはすべて仮想アドレスであり、それを物理アドレスに変換するのはMMUの仕事だからです。私はあなたの疑問を解消したことを願っています:-)

于 2013-07-29T03:42:34.977 に答える