38

私はオペレーティングシステムの概念を読んでいて、第8章にいます!しかし、私はいくつかの説明、または私の理解が正しいという安心感を使うことができました。

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

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

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

物理アドレスに変換された論理アドレスの使用は、1対1ではなく2つのステップを課すのではないのでしょうか?

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

RAMにアドレスを保持することは、論理メモリアドレスの目的とは逆効果のようです。私は自分の理解が間違っているとしか思えません。

4

9 に答える 9

49

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

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

アプリケーションには、(たとえば) 4G の仮想アドレス空間を与えることができます。これは使用可能なメモリであり、必要に応じて自由に使用できます。これは、(アプリケーションの観点からは) 適切な連続したメモリ ブロックです。

ただし、実行中のアプリケーションはこれだけではなく、OS がすべてのアプリケーションを仲介する必要があります。その優れた連続モデルの下では、論理アドレスを物理アドレスに変換するために多くのマッピングが行われています。

このマッピングにより、OS とハードウェア (以下では単にこれらを下位レイヤーと呼びます) は、アプリケーション ページを必要な場所 (物理メモリまたはセカンダリ ストレージにスワップ アウト) に自由に配置できます。

アプリケーションが論理アドレス 50 のメモリにアクセスしようとすると、下位レベルは変換テーブルを使用してそれを物理アドレスに変換できます。また、ディスクにスワップ アウトされた論理メモリにアクセスしようとすると、ページ フォールトが発生し、下位レベルが関連するデータを必要な物理アドレスのメモリに戻すことができます。

物理アドレスしかなかった昔は、コードはどこにでもロードできるため、再配置可能 (またはロード時に固定) である必要がありました。仮想メモリを使用すると、そのコード (およびデータ) は同時に多数の異なるプロセスで論理メモリ位置 50 に存在できますが、実際の物理アドレスは異なります。

1 つの物理コピーが多くのプロセスのアドレス空間に同時に存在するように共有することもできます。これが、共有コード (必要以上の物理メモリを使用しないため) とプロセス間通信を容易にするための共有メモリの核心です)。

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

于 2010-09-13T03:50:46.750 に答える
9

論理アドレスは、プログラムに対する相対アドレスです。特定のプロセスが使用するメモリの量を示しますが、プロセスの正確な場所と、この正確な場所がマッピングを使用して生成され、物理アドレスとして知られていることを示しているわけではありません。

于 2010-11-20T16:14:13.513 に答える
4

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

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

于 2012-05-15T07:45:11.200 に答える
4
  1. CPU によって生成されるアドレスは、一般に論理アドレスと呼ばれます。プログラムによって生成されるすべての論理アドレスのセットは、論理アドレス空間として知られています。一方、メモリユニットによって見られるアドレス、つまりメモリのメモリアドレスレジスタにロードされるアドレスは、一般に物理アドレスと呼ばれます。論理アドレスに対応するすべての物理アドレスのセットは、物理アドレス空間と呼ばれます。
  2. コンパイル時とロード時のアドレス バインディング メソッドは、同一の論理アドレスと物理アドレスを生成します。ただし、実行時のアドレスバインディング方式では、論理アドレス空間と物理アドレス空間が異なります。
  3. ユーザー プログラムは物理アドレスを認識しません。プログラムは、論理アドレス、たとえば 346 へのポインタを作成し、それをメモリに格納し、操作し、それを他の論理アドレスと比較します。すべて 346 という数字です。論理アドレスがメモリ アドレスとして使用される場合にのみ、論理アドレスは、ベース/再配置レジスタ。メモリ管理ユニット (MMU) と呼ばれるメモリ マッピング ハードウェア デバイスは、論理アドレスを物理アドレスに変換します。
  4. 論理アドレスの範囲は 0 から最大です。論理アドレスを生成するユーザー プログラムは、プロセスが 0 から max の場所で実行されると考えます。論理アドレスは、使用する前に物理アドレスにマップする必要があります。ベース/再配置レジスタ値 R の物理アドレスの範囲は (R+0) から (R + max) です。
  5. 例: ここに画像の説明を入力 メモリ管理ユニット (MMU) と再配置/ベース レジスタを使用した論理アドレスから物理アドレスへのマッピング対応する物理アドレス。上の図では、base/relocation 値が 14000 で、ユーザーがロケーション 346 にアクセスしようとすると、14346 にマップされます。
于 2016-01-09T12:38:20.873 に答える
1

論理アドレス空間と物理アドレス空間

CPU によって生成されるアドレスは一般に論理アドレスと呼ばれますが、メモリ ユニットから見たアドレス、つまりメモリのメモリ アドレス レジスタにロードされるアドレスは一般に物理アドレスと呼ばれます。コンパイル時とロード時のアドレス バインドは、同一の論理アドレスと物理アドレスを生成します。ただし、実行時のアドレス バインディング スキームでは、異なる論理アドレスと物理アドレスが生成されます。

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

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

于 2012-08-23T01:48:10.763 に答える
1

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

Stallings の 7.2 章にあります。

于 2015-06-15T03:57:45.443 に答える
0

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

その理由は、基本的に指定したとおりです。これにより、プログラムとプロセスをスレッドとデータにセグメンテーションするだけでなく、そのようなプログラムを動的にロードし、メモリ内の命令を実際にインターレースすることなく、少なくとも疑似並列処理を行うことができます。

于 2010-09-13T03:47:07.800 に答える
-1

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

于 2013-03-22T13:46:50.557 に答える