• 締切済み

仮想メモリのこと

XPでもServerでもいいのですが、仮想メモリアドレス空間とは実際にはどこに作られて、どう運用されるものなんですか よくプロセス毎に4G確保されるといった解説がありますが、いまいちよくわかりません。 わかる方いたら教えてください

みんなの回答

  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.3

対応マップ自体はページテーブルとしてカーネル管理領域内に保持されています。高速化のためMMU内にもそれの一部がTLBとして保持されています。プロセスごとに仮想アドレス空間があるので、プロセスの切り替え時には対応マップ自体も切り替えています。 動作としては、ある仮想メモリアドレスにアクセスしに行ったときそれが物理メモリ上にマッピングされていればそこから読まれますが、物理メモリとのマッピングがなかった場合ページフォルト例外が投げられてOSのメモリハンドラに割り込みの機会を与えます。メモリハンドラはその仮想メモリアドレスを含むページ(仮想メモリの管理単位、確か4kB)が存在すればそれを物理メモリ上に読み出しマッピングテーブルを書き換えます。この際物理メモリに空きがない場合、適当なページが物理メモリ上から追い出されます。 指定されたページにアクセス権がないとおなじみの一般保護エラーが出ます。 ちなみに実アドレスでもページ内のアドレスはリニアです。

mcp888
質問者

補足

専門用語をバシバシ使われてはよくわかりませんです。

回答No.2

仮想メモリはメインメモリ(実装されているメモリ)以外にハードディスク上に専用の領域(スワップファイル)を作成し、メモリの代用を行っているOSの機能のことになります。 通常NT系のOSでは、デフォルトのファイルサイズは実装メモリの約1.5倍の大きさが確保されています。 仮想メモリはOS上からの変更もできますが、タスク切り替え等の操作で、メモリの作業領域を大きくしているだけの話で、OSの処理能力(処理速度)を高めるといった期待はしない方がいいです。

  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

仮想メモリアドレス空間はどこにも確保されません。実メモリ+仮想メモリ(スワップ)との対応マップが存在するだけです。

mcp888
質問者

お礼

いや、しかし対応マップだってOSが管理するうえではどこかにそのデータを置くのではないですかね プロセスに番地が割り当てられれば、それはデータになるのでは?

関連するQ&A