1. ホーム
  2. memory-management

[解決済み] 仮想メモリと物理メモリの違いは何ですか?

2022-03-08 02:49:51

質問

OSの仮想化という概念に戸惑うことが多いのですが。RAMを物理メモリとして考えた場合、なぜプロセスの実行に仮想メモリが必要なのでしょうか?

外付けハードディスクからプロセス(プログラム)をメインメモリ(物理メモリ)に持ってきて実行するとき、この仮想メモリはどこにあるのでしょうか。

仮想メモリの管理は誰が行い、仮想メモリのサイズはどのくらいですか?

仮にRAMのサイズが4GB(=2^32-1アドレス空間)だった場合、仮想メモリのサイズはどうなりますか?

どのように解決するのですか?

仮想メモリは、プログラマがシステム上で無限にメモリを利用できるように錯覚させるための抽象的なものです。

仮想メモリのマッピングは、実際の物理アドレスに対応するように作られています。そのため オペレーティングシステム ページテーブルなどのデータ構造を利用して、マッピングを維持します。仮想メモリのマッピングは、常にページテーブルまたは類似のデータ構造にあります(仮想メモリの他の実装の場合、ページテーブルと呼ぶべきではありません)。ページテーブルは物理メモリにもあり、多くの場合、ユーザープログラムが書き込めないカーネルが確保した領域にあります。

仮想メモリと物理メモリが同じ大きさであれば、仮想メモリマッピングを行う理由はあまりないでしょう。

プログラムの必要な部分だけがメモリに常駐するのが一般的で、これはページングと呼ばれるトピックです。仮想メモリとページングは密接に関係していますが ではなく 同じトピックです。仮想メモリの実装には、セグメンテーションなど、他にもさまざまなものがあります。

私はここで間違っていると仮定しているかもしれませんが、あなたが頭を悩ませていることは、仮想メモリの特定の実装、おそらくページングに関係しているのでしょう。また 一方 ページングには多くの実装があり、教科書に書かれているものと、LinuxやWindowsのような実際のOSに登場するものは同じではない可能性が高いのです。

ページングについては何千段落もしゃべることができますが、それは特にそのトピックを対象とした別の質問に任せたほうがいいと思うんです。