仮想記憶
virtual memory
プロセスがメモリを読む時に、
物理的なメモリのアドレス(物理アドレス)を直接見るのではなく、 仮想的なメモリのアドレス(仮想アドレス)を見て、関節的にアクセスする方法 故に、他のプロセスのメモリ空間にはアクセスできなくなる
ただし、カーネルのメモリに対応するページテーブルエントリは全プロセスの仮想アドレス空間にマップされている
が、カーネルモード専用という情報が付いているので、アクセスを制限できている
プログラマが目にするアドレスは基本的に全て仮想アドレス
プログラマが指定するアドレスや、コマンドの実行により得られるアドレスなどは全て仮想アドレス
プロセスが、物理アドレスに直接アクセスする方法はない
なぜ仮想記憶が必要になのか
仮想記憶が無いということは、全の場合において物理アドレスを使用するということ
プロセスにメモリを割り当てる時に、物理的なアドレス位置を考慮する必要がある
以下のような問題が生じる
別用途のメモリにアクセスできてしまう
プログラム内で、容易に別プロセスのメモリにアクセスできてしまう
そのアドレスが、自プロセスなのか、別プロセスなのかをいちいち人間が考慮してアクセスしないといけない
マルチプロセスの扱いが困難
大きく分けて2種類の方式がある
サイズが可変な点?
まとめ
参考