質問

私はオペレーティングシステムのコンセプトを読んでいます、そして私は第8章にいます!しかし、私はいくつかの明確化、または私の理解が正しいという安心感を使用することができます。

論理アドレス:本によると、論理アドレスはCPUによって生成されます。これは正確にはどういう意味ですか? (実行されたアドレスシステムで..)プログラムのためにコードがコンパイルされたとき、プログラムは いいえ コードがメモリ内でロードされる場所のアイデア。コンパイラが行うのは、プログラムレイアウトの一般的なスケッチと、画像のレイアウト方法の一般的なスケッチをセットアップすることですが、実際のアドレスを割り当てません。プログラムが実行されると、CPUはコンパイラが作成したこのレイアウト画像を取得し、コードから生成されたアドレス(論理的なアドレス)にいくつかのアドレス(論理)を配ります。

物理アドレス:物理アドレスは、CPUがいくつかの論理アドレス(ベースアドレスとオフセットで構成される)を生成するまで生成されません。論理アドレスは、MMUまたは別のデバイスを通過し、論理アドレスが物理RAMアドレスにマッピングされます。

それでは実際の違いは何ですか?私は1つの利点を見ることができます。論理アドレスを使用すると、アプリケーションにより多くの自由が得られます。物理アドレスがハードコード化されている場合、プログラムの成功は物理的なコンピューターマシン、利用可能なRAMアドレスなどに大きく依存します。

物理アドレスに変換された論理アドレスの使用は、1対1ではなく2つのステップを課していないため、頭の上にありませんか?

それでは、論理アドレスはどこにありますか? CPUがプロセスを修正している間、CPUのレジスタに存在する可能性がありますが、前後にどこに行きますか?これは実装に依存していることを理解しています。 TLBなどのCPU上の特別なレジスタスペースまたはバッファーに保管される可能性があると思いますか?そうでない場合、テーブルは実際のRAM自体に存在する可能性があり、CPUはRAMのテーブルのベースアドレスへのポインター/アドレスのみを保持します、正しいですか?

RAMのアドレスを保持することは、論理メモリアドレスの目的に対抗するように思われます。私は自分の理解が間違っていると仮定することしかできません。

役に立ちましたか?

解決

この答えは決して網羅的ではありませんが、物事をクリックするのに十分な説明をするかもしれません。

仮想メモリシステムでは、論理アドレスと物理アドレスの間に切断があります。

アプリケーションには、(たとえば)4gの仮想アドレス空間を与えることができます。これはその使用可能なメモリであり、適切と思われるので自由に使用できます。それは(アプリケーションの観点から)メモリの素晴らしいブロックです。

しかし、それはそうではありません それだけ アプリケーションを実行し、OSはそれらすべてを調停する必要があります。その素敵な隣接するモデルの下には、論理を物理的なアドレスに変換するために多くのマッピングが進行しています。

このマッピングを使用すると、OSとハードウェア(これらをこれから下の下層と呼びます)は、必要な場所にアプリケーションページを無料で配置できます(物理メモリまたはセカンダリストレージに交換)。

アプリケーションが論理アドレス50でメモリにアクセスしようとすると、より低いレベルはそれを翻訳テーブルを使用して物理アドレスに変換できます。また、ディスクに交換された論理メモリにアクセスしようとすると、ページの障害が増加し、より低いレベルが関連するデータをメモリに戻すことができます。 物理的 それが望んでいるアドレス。

物理的なアドレスがすべてのものであった悪い昔は、コードがどこにでもロードできるため、コードが再送信可能(またはロードで固定されている)必要がありました。仮想メモリを使用すると、そのコード(およびデータ)は、同時にダースの異なるプロセスで論理メモリロケーション50にあることができます - それは実際です 物理的 ただし、アドレスは異なります。

それを共有することさえできます 物理的 コピーは、多くのプロセスのアドレス空間に一度に存在します。これは、共有コードの核心であり(そのため、必要以上の物理メモリを使用しません)、共有メモリは簡単にプロセス間通信を可能にします)。

もちろん、それは純粋な物理的アドレス環境よりも効率が低いですが、CPUメーカーは、それが頻繁に使用されているため、可能な限りめちゃくちゃ効率的にしようとします。利点 遠い 欠点を上回ります。

他のヒント

論理アドレスは、プログラムに関連するアドレスです。特定のプロセスがどれだけのメモリを取るかを示しますが、プロセスの正確な位置と、マッピングを使用して生成したこの正確な場所は何であり、物理アドレスとして知られています。

論理アドレス: - CPUによって生成された論理アドレス。問題をコンピューターに与えると、コンピューターは論理アドレスを介して問題をプロセッサに渡します。これは、論理アドレスと呼ばれるこのアドレスが表示されません。

物理アドレス: - プロセッサがプロセスを作成して問題を解決するとき、私たちは物理アドレスと呼ばれるアドレスを介してセカンダリメモリにデータを保存します

  1. CPUによって生成されたアドレスは、一般に論理アドレスと呼ばれます。プログラムによって生成されるすべての論理アドレスのセットは、論理アドレス空間として知られています。一方、メモリユニット、つまり、メモリのメモリアドレスレジスタにロードされたアドレスで見られるアドレスは、一般に物理アドレスと呼ばれます。論理アドレスに対応するすべての物理アドレスのセットは、物理アドレス空間として知られています。
  2. コンパイル時間および負荷時間アドレスバインディング方法は、同一の論理的および物理的なアドレスを生成します。ただし、実行時間アドレスバインディングスキームでは、論理的および物理的なアドレススペースが異なります。
  3. ユーザープログラムは、物理的なアドレスを見ることはありません。このプログラムは、346などの論理アドレスへのポインターを作成し、メモリに保存し、操作し、他の論理アドレスと比較します。ベース/再配置登録。メモリ管理ユニット(MMU)と呼ばれるメモリマッピングハードウェアデバイスは、論理アドレスを物理アドレスに変換します。
  4. 論理アドレスの範囲は0から最大です。論理アドレスを生成するユーザープログラムは、プロセスが0から最大の場所で実行されると考えています。論理アドレスは、使用する前に物理アドレスにマッピングする必要があります。物理アドレスは、ベース/再配置レジスタ値Rの(R + 0)から(R + MAX)から(R + MAX)までの範囲です。
  5. 例:enter image description hereメモリ管理ユニット(MMU)とリロケーション/ベースレジスタを使用した論理から物理的アドレスへのマッピングリロケーション/ベースレジスタの値は、メモリに送信される時点で、対応する物理を生成するために、ユーザープロセスによって生成されるすべての論理アドレスに追加されます住所。上記の図では、ベース/再配置値は14000です。その後、ユーザーが位置346にアクセスする試みが14346にマッピングされます。

論理と物理アドレス空間

CPUによって生成されたアドレスは一般に論理アドレスとして審判されますが、メモリユニットで見られるアドレスは、メモリのメモリアドレスレジスタにロードされるものであり、一般的に物理アドレスとしてrefereedされます。コンパイル時間と負荷時間アドレスバインディングただし、同一の論理的および物理的なアドレスを生成します。

プログラムによって生成されるすべての論理アドレスのセットは論理アドレス空間として知られていますが、これらの論理アドレスに対応するすべての物理アドレスのセットは物理アドレス空間です。今、仮想アドレスから物理アドレスへの実行時間マッピングは、メモリ管理ユニットと呼ばれるハードウェアデバイス。ベースレジスタのマッピングの場合、ここは再配置レジスタと呼ばれます。リロケーションレジスタの値は、メモリに送信された時点でユーザープロセスによって生成されたアドレスに追加されます。この状況の例を使用して、ベースレジスタに値1000が含まれている場合、ユーザーが位置0に対処する試みが場所1000に動的に再配置され、場所346へのアクセスが位置1346にマッピングされます。

ユーザープログラムでは、実際の物理アドレス空間が表示されることはありません。常に論理アドレスを扱います。範囲内に2つの異なるタイプのアドレス(0からmax)と範囲内の物理アドレス(RからR+MAX)があるためここで、rは再配置レジスタの値です。ユーザーは論理アドレスのみを生成し、プロセスが位置で0から最大に実行されると考えています。上記のテキストからは、ユーザープログラムが論理アドレスのみを提供することが明らかであるため、これらの論理アドレスはマッピングする必要がありますそれらが使用される前に物理的なアドレスに。

論理アドレスは、メモリへの現在のデータの割り当てとは無関係にメモリの位置への参照です。物理アドレスまたは絶対アドレスは、メインメモリの実際の場所です。

それは、スタリングの第7.2章にあります。

私の記憶の最高のために、物理的なアドレスは明示的であり、メモリ内の石のアドレスに設定されていますが、論理アドレスはベースポインターとオフセットで構成されています。

その理由は、基本的に指定したとおりです。プログラムとプロセスのスレッドとデータへのセグメンテーションだけでなく、そのようなプログラムの動的な負荷、および少なくとも擬似並列性の手当を可能にします。

私はAを見つけました 記事 オペレーティングシステムの論理的アドレスと物理アドレスについて、これについては明確に説明しています。

論理アドレス プログラムの実行中にCPUによって生成されます。論理アドレスは、物理的には存在しないため、仮想アドレスです。したがって、仮想アドレスとしても知られています。このアドレスは、CPUによって物理メモリの位置にアクセスするための参照として使用されます。論理アドレススペースという用語は、プログラムの観点から生成されるすべての論理アドレスのセットに使用されます。メモリ管理ユニットと呼ばれるハードウェアデバイスは、対応する物理アドレスに論理アドレスをマッピングするために使用されます。

実在住所 メモリ内の必要なデータの物理的位置を識別します。ユーザーは物理アドレスを直接扱うことはありませんが、対応する論理アドレスでアクセスできます。ユーザープログラムは論理アドレスを生成し、プログラムがこの論理アドレスで実行されていると考えていますが、プログラムはその実行に物理メモリが必要であるため、使用する前に論理アドレスを物理アドレスにマッピングする必要があります。物理アドレス空間という用語は、論理アドレス空間内の論理アドレスに対応するすべての物理アドレスに使用されます。

Logical and Physical Address comparision

ソース: www.geeksforgeeks.org

論理アドレスは、アイテム(メモリセル、ストレージ要素、ネットワークホスト)が実行されるアプリケーションプログラムの観点から存在するように見えるアドレスです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top