アドレスバインディングとは何ですか?

アドレスバインディングとは何ですか?

私が見つけた「アドレスバインディング」のいくつかの説明はい。彼らは、「アドレスバインディングは、仮想アドレスまたは論理アドレスを物理アドレスにマッピングする操作」と言います。

この定義は正しいですか?

大学講演では、仮想アドレスを物理アドレスに変換する作業が実行時に行われていることがわかり、正しいかどうかはわかりません。ただし、アドレスバインディングは、バインディング操作がコンパイル時間、ロード時間、または実行時間に実装できることを意味します。

これは矛盾を示しています。

ベストアンサー1

Quoraの説明はかなり混乱しており、いくつかの概念を混同しているようです。

メモリアドレス(たとえば、ネットワークアドレスとは反対)の文脈では、「アドレスバインディング」という用語は、以下に由来します。リンカーとローダーに関するLeon PresserとJohn R. Whiteによる1972年の論文(また見てACMを始めよう) これは次のように定義されます。

論理アドレスを物理アドレスに変換またはマッピングすることを呼び出します。アドレスバインディング

すぐに読むと、これがメモリ管理の観点から論理アドレスと物理アドレスについて話しているという印象を与えることができますが、この記事ではそうではありません。物理アドレスはメモリ内の「情報」のアドレスであり、論理アドレスです。その情報記号を参照するために使用されます。したがって、アドレスバインディングは現在一般的にシンボル(またはポインタ)の再配置として知られていますが、これはコンパイル時間(静的バイナリ生成時など)、ロード時間(ダイナミックリンカが共有ライブラリのシンボルをチェックするとき)に発生する可能性があります。または実行時(実行中のプログラムが手動で記号を確認するとき、例えば使用dlopen)。

おすすめ記事