2012-05-03 9 views
1

通常、静的変数と大域変数は、初期化条件に従って.dataセクションまたは.bssセクションに格納されます。彼らの生涯はプログラムの始めから終わりまでであると言われており、プログラムはページング管理で要求されたときにページとしてメモリにロードされることも知られている。これは、.dataセクションと.bssセクションの両方が、アクセス前に、または最初の命令が実行される前に、メモリにロードされている必要がありますか?.dataまたは.bssセクションに格納されている静的または大域データを、プログラムの実行前にロードする必要がありますか?

答えて

2

ここでは、2つのレベルの抽象化を扱っています。プログラム内でアクセスされるものはすべて仮想アドレス空間にあり、.data/.bssセクションはプログラムの実行開始時に利用できます。より深い抽象化は、仮想アドレス空間がメモリマネージャによって管理されるページングを使用して物理メモリによってバックアップされることである。これは、プロセスをロードする実行コードとコードには完全には分かりません。このレベルでは、物理ページがロードされていないために.data/.bss(またはあなたのコードさえ)の部分がメインメモリに存在しない可能性があります。一般に、これらは対応する仮想アドレスが参照されるとオンデマンドでロードされます。

詳細については、「メモリ管理」、「仮想メモリ」、「ページング」などのGoogleのものがあります。

関連する問題