通常、静的変数とグローバル変数は両方とも、初期化条件に従って .data または .bss セクションに格納されます。それらの寿命はプログラムの開始から終了までと言われ、ページング管理で要求されたときにプログラムがページとしてメモリにロードされることも知られています。これは、.data セクションと .bss セクションの両方を、アクセス前または最初の命令が実行される前にメモリにロードする必要があるということですか?
質問する
154 次
1 に答える
2
ここでは、2 つのレベルの抽象化を扱っています。プログラム内でアクセスされるものはすべて仮想アドレス空間にあり、.data/.bss セクションはプログラム実行の開始時に使用できます。より深い抽象化は、仮想アドレス空間がページングを使用して物理メモリに支えられ、メモリ マネージャーによって管理されることです。これは、実行中のコードとプロセスをロードするコードにはまったくわかりません。したがって、このレベルでは、物理ページがロードされていないため、.data/.bss (またはコードでさえも) の一部がメイン メモリに存在しない可能性があります。一般に、これらは、対応する仮想アドレスが参照されるときにオンデマンドでロードされます。 .
詳細については、「メモリ管理」、「仮想メモリ」、「ページング」などを Google で調べてください。
于 2012-05-03T03:16:12.667 に答える