私はオペレーティングシステムの概念を読んでいて、第8章にいます!ただし、説明を使用するか、自分の理解が正しいことを確信することができます。
論理アドレス:本によると、論理アドレスはCPUによって生成されます。これはどういう意味ですか? (実行により生成されたアドレスシステムでは。)プログラム用にコードがコンパイルされると、プログラムにはnoというコードがメモリのどこにロードされるかがわかります。コンパイラは、プログラムレイアウトの一般的なスケッチと画像のレイアウト方法を設定するだけで、実際のアドレスを割り当てません。プログラムが実行されると、CPUはコンパイラが作成したこのレイアウトイメージを取得し、コードから生成されたアドレスにいくつかのアドレス(論理アドレス)を渡します。
物理アドレス:物理アドレスは、CPUが論理アドレスのセット(ベースアドレスとオフセットで構成される)を生成するまで生成されません。論理アドレスはMMUまたは別のデバイスを経由し、論理アドレスは線に沿って物理的なRAMアドレスにマッピングされます。
実際の違いは何ですか?一つの利点があります。論理アドレスを使用すると、アプリケーションの自由度が高まります。物理アドレスがハードコードされている場合、プログラムの成功は物理コンピューターのマシンに大きく依存し、利用可能なRAMアドレスなど。
物理アドレスに変換された論理アドレスを使用すると、1対1ではなく2つのステップが発生しませんか?
生成後、論理アドレスはどこにありますか? CPUがプロセスを処理している間にCPUのレジスタに存在する場合がありますが、その前後にどこに行きますか?これは実装に依存することを理解しています。 TLBなど、CPU上の特別なレジスタースペースまたはバッファーに格納される可能性があると思いますか?そうでない場合、テーブルは実際のRAM自体に存在する可能性があり、CPUはRAM内のテーブルのベースアドレスへのポインタ/アドレスのみを保持していますか?
アドレスをRAMに保持することは、論理メモリアドレスの目的に反生産的です。自分の理解が間違っているとしか思われない。
この答えは決して網羅的なものではありませんが、クリックするのに十分な説明になるかもしれません。
仮想メモリシステムでは、論理アドレスと物理アドレスの間に切断があります。
アプリケーションには、(たとえば)4Gの仮想アドレス空間を与えることができます。これは使用可能なメモリであり、適切と思われる場合は自由に使用できます。これは(アプリケーションの観点から)ニースの連続したメモリブロックです。
ただし、これはonlyアプリケーションではなく、OSがそれらすべてを仲介する必要があります。ニースの連続モデルの下には、論理アドレスから物理アドレスへの変換を行う多くのマッピングがあります。
このマッピングにより、OSとハードウェア(これ以降、これらを下位レイヤーと呼びます)は、アプリケーションページを任意の場所(物理メモリまたはセカンダリストレージにスワップアウト)に自由に配置できます。
アプリケーションが論理アドレス50のメモリにアクセスしようとすると、下位レベルは変換テーブルを使用してそれを物理アドレスに変換できます。また、ディスクにスワップアウトされた論理メモリにアクセスしようとすると、ページフォールトが発生し、下位レベルでは、必要な物理アドレスで、関連データをメモリに戻すことができます。
物理アドレスがすべて揃っていた悪い昔は、コードはどこにでもロードできるため、再配置可能(またはロード時に修正)する必要がありました。仮想メモリを使用すると、そのコード(およびデータ)は、同時に多数の異なるプロセスの論理メモリ50に配置できます。実際は物理アドレスは異なります。
1つの物理コピーが多くのプロセスのアドレス空間に一度に存在するように共有することもできます。これは、共有コード(必要以上に物理メモリを使用しない)とプロセス間通信を容易にするための共有メモリの核心です。
もちろん、純粋な物理アドレス環境よりも効率は劣りますが、CPUの製造元は頻繁に使用されるため、可能な限りめちゃくちゃ効率的にしようとしています。利点farは欠点を上回っています。
論理アドレスは、プログラムに相対的なアドレスです。特定のプロセスが使用するメモリ量を示します。プロセスの正確な場所と、マッピングを使用して生成された正確な場所を示すものではなく、物理アドレスと呼ばれます。
論理アドレス:-CPUによって生成された論理アドレス。問題をコンピュータに与えるとき、私たちのコンピュータは論理アドレスを通して問題をプロセッサに渡します。
物理アドレス:-プロセッサがプロセスを作成して問題を解決すると、物理アドレスと呼ばれるアドレスを介してセカンダリメモリにデータを保存します
論理アドレスは、メモリへのデータの現在の割り当てに関係なく、メモリの場所への参照です。物理アドレスまたは絶対アドレスは、メインメモリ内の実際の場所です。
Stallingsの7.2章にあります。
論理対物理アドレス空間
CPUによって生成されるアドレスは一般に論理アドレスと呼ばれますが、メモリユニットから見たアドレス、つまりメモリのメモリアドレスレジスタにロードされるアドレスは一般に物理アドレスと呼ばれます。コンパイル時とロード時のアドレスバインディング同一の論理アドレスと物理アドレスを生成します。ただし、実行時アドレスバインディングスキームにより、論理アドレスと物理アドレスが異なります。
プログラムによって生成されるすべての論理アドレスのセットは論理アドレススペースと呼ばれますが、これらの論理アドレスに対応するすべての物理アドレスのセットは物理アドレススペースです。現在、仮想アドレスから物理アドレスへのランタイムマッピングは、メモリ管理ユニットと呼ばれるハードウェアデバイス。ここでは、ベースレジスタをマッピングする場合は再配置レジスタと呼ばれます。再配置レジスタの値は、メモリに送信されるときにユーザープロセスによって生成されたアドレスに追加されます。たとえば、ベースレジスタに値1000が含まれている場合、ユーザーによるロケーション0のアドレス指定の試みはロケーション1000に動的に再配置され、ロケーション346へのアクセスはロケーション1346にマッピングされます。
ユーザープログラムは実際の物理アドレス空間を見ることはなく、常に論理アドレスを処理します。2つの異なるタイプのアドレスがあるため、範囲(0〜max)の論理アドレスと範囲(R〜R + max)の物理アドレスここで、Rは再配置レジスタの値です。ユーザーは論理アドレスのみを生成し、プロセスは0〜maxのロケーションで実行されると考えます。上記のテキストから、ユーザープログラムが論理アドレスのみを提供することが明らかであるため、これらの論理アドレスはマッピングする必要がありますそれらが使用される前に物理アドレスに。
私の記憶の限りでは、物理アドレスはメモリ内の石のアドレスに明示的に設定され、論理アドレスはベースポインタとオフセットで構成されます。
その理由は、基本的に指定したとおりです。プログラムとプロセスをスレッドとデータに分割するだけでなく、そのようなプログラムの動的な読み込み、および少なくとも擬似並列処理を可能にします。メモリ内の命令を実際にインターレースする必要はありません。
オペレーティングシステムの論理アドレスと物理アドレスについて 記事 を見つけました。
論理アドレスは、プログラムの実行中にCPUによって生成されます。論理アドレスは物理的に存在しないため仮想アドレスであり、したがって仮想アドレスとも呼ばれます。このアドレスは、CPUによって物理メモリの場所にアクセスするための参照として使用されます。論理アドレス空間という用語は、プログラムの観点から生成されたすべての論理アドレスのセットに使用されます。メモリ管理ユニットと呼ばれるハードウェアデバイスは、論理アドレスを対応する物理アドレスにマッピングするために使用されます。
物理アドレスは、メモリ内の必要なデータの物理的な場所を識別します。ユーザーは物理アドレスを直接扱うことはありませんが、対応する論理アドレスでアクセスできます。ユーザープログラムは論理アドレスを生成し、プログラムはこの論理アドレスで実行されていると考えますが、プログラムの実行には物理メモリが必要なので、論理アドレスは物理アドレスbu MMU before物理アドレス空間という用語は、論理アドレス空間内の論理アドレスに対応するすべての物理アドレスに使用されます。