私はオペレーティングシステムの概念を読んでいて、第8章にいます!しかし、私はいくつかの説明、または私の理解が正しいという安心感を使うことができました。
論理アドレス:本によると、論理アドレスはCPUによって生成されます。これは正確にはどういう意味ですか?(実行生成アドレスシステムでは..)コードがプログラム用にコンパイルされるとき、プログラムはコードがメモリのどこにロードされるかを知らないと思います。コンパイラが行うのは、プログラムレイアウトの一般的なスケッチと画像のレイアウト方法を設定することだけですが、実際のアドレスは割り当てられません。プログラムが実行されると、CPUはコンパイラが作成したこのレイアウトイメージを取得し、コードから生成されたアドレスにいくつかのアドレス(論理アドレス)を渡します。
物理アドレス:物理アドレスは、CPUが論理アドレスのセット(ベースアドレスとオフセットで構成される)を生成するまで生成されません。論理アドレスはMMUまたは別のデバイスを通過し、ラインのどこかで論理アドレスが物理RAMアドレスにマップされます。
では、実際の違いは何ですか?私は1つの利点を見ることができます。論理アドレスを使用すると、アプリケーションの自由度が高まります。物理アドレスがハードコーディングされている場合、プログラムの成功は、物理コンピュータマシン、使用可能なRAMアドレスなどに大きく依存します。
物理アドレスに変換された論理アドレスの使用は、1対1ではなく2つのステップを課すのではないのでしょうか?
では、生成後の論理アドレスはどこにありますか?それらは、CPUがプロセスを処理している間、CPUのレジスターに存在する可能性がありますが、前後で、どこに行きますか?これは実装に依存することを理解しています。TLBなどのCPUの特殊レジスタスペースまたはバッファに格納されている可能性があると思いますが、正しいですか?そうでない場合、テーブルは実際のRAM自体に存在する可能性があり、CPUはRAM内のテーブルのベースアドレスへのポインタ/アドレスのみを保持します。
RAMにアドレスを保持することは、論理メモリアドレスの目的とは逆効果のようです。私は自分の理解が間違っているとしか思えません。