メモリマッピングについて

メモリマッピングについて

メモリマッピングを使用すると、複数のプロセスがページにアクセスできるように、複数のプロセス間でページを「フェードイン」することができます。オペレーティングシステムがページングを介してこの問題をどのように処理するかを説明しますか?

答え1

CPU にはメモリ管理デバイスがあります。仮想メモリアドレスを物理メモリアドレスにマッピングします。ルックアップテーブルにマッピングしてこれを行います。このエントリは次の場所にキャッシュされます。TLB(翻訳参照バッファ)。各プロセスには独自のマッピングがあります。

両方のプロセスがいくつかの物理メモリを共有する場合、オペレーティングシステムはプロセスAの仮想メモリの一部をその物理メモリにマッピングし、プロセスBの仮想メモリの一部を同じ物理メモリにマッピングします。両方のプロセスで同じ仮想アドレスにある必要はありません。

答え2

仮想メモリが存在しないため、仮想という名前が付けられます。仮想メモリは、単にプロセスが表示して使用するメモリアドレス(32または64ビット数)であり、物理ハードウェアメモリを指すことができます。

それが指すハードウェアメモリはすでに他のプロセスで利用可能であるため、この方法でプロセス間でメモリを共有でき、多くの操作がこのように行われています。

特定の仮想メモリ領域へのプロセスアクセスを検出するメカニズムもあり、これは実際にそのアドレスにアクセスする前に「何かを実行する」。たとえば、一部のハードウェアメモリをその場所にマップしたり、誤動作してプロセスを終了したりできます。

これはすべて、事前定義された機能とサイズのアドレス空間ブロックであるページを介して行われます。ブロックサイズは通常固定されており、1〜16KB(プロセッサによって異なります)です。

関連情報