it-swarm-ja.com

論理メモリと仮想メモリの間にはどのような違いと関係がありますか?

論理メモリと仮想メモリの違いや関係は何だろうと思っていましたか?それらの目的はどのように異なりますか?

論理アドレスと仮想アドレスの関係と違いは同じですか?

1
Tim

まず、仮想アドレス指定と論理アドレス指定の違いについて説明します。 「論理アドレス」とは、プログラムが認識するアドレスが、RAMに格納されているデータの物理アドレスとは異なることを意味すると思います。

仮想メモリがある場合、保存されているデータがディスクにスワップアウトされる可能性があるため、物理アドレスがまったくない可能性があります。ただし、論理アドレスが物理アドレスとは異なる仮想メモリのないシステムを使用することは可能ですが、各論理アドレスは物理アドレスにマップされます。これにより、複数のプログラムを互いに踏まずに実行することが容易になりますが、プログラムがシステムで使用可能な物理メモリよりも多くのメモリを使用することはありません。

したがって、コンピュータには個別の「論理メモリ」はありませんが、論理アドレスはあるが仮想メモリシステムがないコンピュータには論理メモリシステムがあると言えます。論理メモリは、何らかの間接的な方法でアドレス指定されたメモリであると言えます。あなたが考えている特定のコンピュータシステムはありますか?

-

あなたのコメントを考慮に入れて:

同じ物理メモリの論理アドレスは、同じでも異なっていてもかまいません。通常、2つのプロセスは同じメモリにアクセスできません。これは、一方が他方を破損する可能性があるためです。ただし、何らかの形式の共有メモリを使用するように手配している場合は、通常、その共有メモリを別のアドレスにマップします。仮想アドレスは多かれ少なかれ論理アドレスの一種であるため、VMをサポートするオペレーティングシステムがあり、2つのプロセスが共有メモリをマップする場合、通常、仮想アドレスがない場合と同じように、そのメモリは異なるアドレスにあると見なされます。メモリ。

論理メモリと仮想メモリの目的を理解するために、仮想メモリはHDを使用して、プログラムで使用できるメモリを拡張するためのものです。論理アドレス指定は、プロセスの分離以外にも使用できますが、それは1つの主要な用途になります。

4
dsolimano

「論理」メモリアドレスは、プロセスがそのコードとデータを参照するために使用されます。論理アドレスから物理アドレスへの変換は、メモリモデルによって異なります。

メモリが直接マップされている場合(つまり、リアルモード)、論理メモリアドレスは物理メモリアドレスと同じです。

物理メモリがプロセッサのアドレス空間よりも大きい場合(16ビットプロセッサなど)、メモリバンクハードウェアを使用して、物理メモリの使用可能量を拡張することがよくあります。 Intel 8086/8088プロセッサは、固定バンク方式の代わりに柔軟なセグメントレジスタを使用していました。 (16ビット)論理アドレスから(20ビット)物理アドレスへの変換では、バンクマップテーブルが使用されます。 x86の場合、論理アドレスにはおそらくセグメントレジスタの指定が含まれます。

物理アドレス範囲が一般的な物理メモリ(10年前の32ビットプロセッサなど)よりも大きい場合は、仮想メモリハードウェアを使用して、アドレス範囲全体を使用できます。論理アドレスは、オンデマンドで物理メモリによってバックアップされます。完全な仮想/論理アドレス空間に対応するため、および/または各プロセスに独自のアドレス空間を提供するために、仮想メモリのスワップアウトされたコピーを保持するためにバッキングストアが必要です。スワップされたメモリは、セグメント、ページ、またはセグメント化されたページごとに編成できます。

ところで、Unixカーネルのハッキングの数年間、「論理(メモリ)アドレス」というフレーズを聞いたり使用したりすることはめったにありませんでした。物理メモリアドレスを参照していない場合、それは仮想アドレスでした。つまり、「論理アドレス」==「仮想アドレス」(仮想メモリがMMUでアクティブ化されている場合)。

3
sawdust