アドレスには2つのタイプがあることを知っています。仮想と物理。整数変数のアドレスを出力すると、その仮想アドレスが出力されます。その変数の物理メモリを簡単に出力できる関数はありますか?
仮想メモリとは、OS によって RAM として扱われるハードディスク上のセクションを意味しますか?
アドレスには2つのタイプがあることを知っています。仮想と物理。整数変数のアドレスを出力すると、その仮想アドレスが出力されます。その変数の物理メモリを簡単に出力できる関数はありますか?
仮想メモリとは、OS によって RAM として扱われるハードディスク上のセクションを意味しますか?
いいえ、そのような (ポータブル) 機能はありません。メモリ保護を実装する最新のオペレーティング システムでは、ユーザー空間 (カーネル空間、つまり OS の一部とは対照的に) は物理アドレスに直接アクセスできません。これは単に許可されていません。したがって、ほとんど意味がありません。
いいえ、仮想メモリにハードディスクを含める必要はありません。つまり、「スワッピング」または「ページング」です。仮想メモリがあれば、OS が物理メモリに保持されるページに介入して管理する機会が与えられるため、これを実装できます。これにより、メモリを他のストレージ メディアに「ページ アウト」することが可能になります。
Linux カーネルがどのようにメモリを管理するかについての非常に詳細な考察については、このブログ投稿が素晴らしいです。
これは複雑な問題です。
物理メモリアドレスは、システムメモリ、グラフィックカードメモリ、ネットワークカードバッファなど、ハードウェアメモリデバイス内の実際の場所を指します。
仮想メモリは、ユーザーモードプロセスに提示されるメモリモデルです。システム上のほとんどのデバイスには、プロセッサが書き込むことができる仮想メモリアドレス空間がマップされています。これらの物理メモリアドレスに仮想メモリアドレスが与えられると、OSは、これらのアドレスへの読み取り/書き込み要求を特定のデバイスで処理する必要があることを認識し、その要求をデバイスに委任します。