-4

OSを勉強すると、論理メモリという概念が見つかります。論理メモリが必要なのはなぜですか?CPUは論理メモリをどのように生成しますか?「&ptr」演算子の出力は論理アドレスまたは物理アドレスですか?論理メモリと仮想メモリですか?同じ?

4

1 に答える 1

0

CとC++について話している場合sizeof、サイズが返され、アドレスは返されません。また、CPUはメモリを生成しません。

x86 CPUでは、アドレスの計算と変換にいくつかのレイヤーがあります。x86プログラムは、セグメントセレクタ(これは必ずしも命令で明示的に指定されるとは限らず、、、、またはセグメントレジスタから取得される場合があります)とオフセット2つの項目で構成される論理アドレスで動作します。csdssses

次に、セグメントセレクタはセグメントベースアドレスに変換されます(直接(リアルアドレスモードおよびCPUの仮想8086モードでは16倍)、または特別なセグメント記述子テーブル(グローバルまたはローカル、GDTまたはLDT、 CPUのプロテクトモードでは、セレクタは記述子テーブルへのインデックスとして使用され、そこからベースアドレスがプルされます)。

次に、合計セグメントのベースアドレス+オフセットが線形アドレス(別名仮想アドレス)を形成します。

CPUがリアルアドレスモードの場合、それが最終的な物理アドレスです。

CPUがプロテクトモード(または仮想8086)の場合、その線形/仮想アドレスは、ページテーブルを使用して物理アドレスにさらに変換できます(もちろん、ページ変換が有効になっている場合は、そうでない場合は、最終的な物理アドレスになります。良い)。

物理メモリはRAMまたはROM(またはフラッシュ)です。仮想メモリは、ディスクストレージのスペースによって拡張された物理メモリです(SSDがある場合と同様に、フラッシュである可能性があります)。

あなたは本当にこれを読む必要があります。わからないようです。

于 2013-03-22T14:41:32.453 に答える