0

アドレス空間に関して疑問があります。4 GB の場合の RAM は、カーネル スペース (1 GB) とユーザー スペース (3 GB) の 2 つの半分に分割されると考えました。

1] RAMは、スタック、ヒープ、コード、およびデータセクションもハードディスクとして維持しますか。

2] 実行中のプロセスには、スタック、データ、コード、およびヒープが RAM 内で成長しなければならない境界が与えられていません。

3]私の考えでは、スタック、ヒープ、コード、およびデータセグメントはすべて、プロセスの作成時にプロセスに与えられた連続したアドレス空間にあると考えていました。

4]プロセスは物理メモリ内で連続していないため、CPUは実行するプロセスの正しいアドレスをどのように取得しますか。

ここに画像の説明を入力

4

1 に答える 1

2

いいえ、仮想メモリ アドレス空間だけが 2 つに分割されます。マシンの RAM である物理メモリには、仮想メモリ アドレスにマップされる完全にランダムなブロックのコレクションが含まれています。オペレーティング システム ページとユーザー プログラム ページの両方から。OSページを一番下に表示するのは少し誤解を招くかもしれませんが、画像によく似ています。

そのマッピングは常に変化します。ページ フォールトは、仮想メモリ ページを RAM にマップするための重要なメカニズムです。これは、RAM にまだ存在しない仮想メモリ ページにプログラムがアクセスしたときにトリガーされます。必要に応じて、RAM ページのマップを解除して領域を空けることができます。そのコンテンツは破棄されるか、ページファイルに書き込まれます。通常、コードは破棄可能で、実行可能ファイルから読み取ることができますが、データは通常そうではありません。

RAM の一部のページは特別で、ドライバーによって使用されるコードとデータが含まれています。それらはページロックされています。ドライバーがデバイス割り込みを処理し、割り込みハンドラーによって使用されるコード/データが RAM に存在して割り込みを処理できるようにする必要がある場合に必要です。絵がそのように描かれた考えられる理由。

于 2013-11-02T12:10:21.173 に答える