wakuwaku diary

ワクワクすること♪

プログラムから命令やデータを読み込む

この方式を簡単にいうと、つぎのようになっている。全体の関係はメイン・メモリ、仮想メモリ、ディスクとなる。この中で物理的に存在するものは、メインメモリとディスクであって、仮想メモリはその名の通り、現実には存在しない。メイン・メモリにより構成される空間を、メイン・メモリ空間という。同様に、仮想メモリにより構成される空間を、仮想メモリ空間という。概念的に話を進めると、CPUが実際にプログラムを実行していくとき、仮想メモリ空間上にあるプログラムから命令やデータを読み込む。これは実際には実在しない仮想メモリ空間から読み込むのではなく、MMUを通してメインメモリ空間から読み込んでいるのである。すなわち、MMUは、メイン・メモリ空間を仮想メモリ空間にみせるためのメガネの役割を果たしている。メインメモリ空間および仮想メモリ空間は、おのおのある大きさた(とえば一キロ、バイト)のページといわれる単位に区切られて管理されており、仮想メモリ空間内のページは、メイン・メモリ空間のページに一対一で対応している。したがって、仮想メモリ空間内のプログラムもページに分割されており、このページごとに順番にプログラムが実行されていく。ところが、巨大な仮想メモリ空間の全ページがメイン・メモリ空間の各ページに対応することはあり得ない。もし対応できたとしたら、メイン・メモリが必要な大きさ分あるわけで、仮想メモリ方式は必要なくなる。このため、CPUが仮想メモリ空間のページごとにプログラムを実行していったとき、ある時点で必ず対応するページがメイン・メモリ空間の中に見当たらない場合が起こり得る。この事態のことをページ・フォールトプグラムページ・フォールトが起こったあと、CPUがプログラムの実行を続けていくためには、メインメモリ空間の中に必要なページを読み込み、仮想メモリ区間との間の対応をとらなければならない。この必要なページは、どこにあるのであろうか。ディスクの中である。このことから、仮想メモリ空間を物理的に存在させる実体は、ディスクであるといえる。ディスクの中に、仮想メモリ空間を具体的にどのように反映させるかについては、いくつかの方法がある。最も単純なやり方は、仮想メモリ空間をそのままディスクの中にもつやり方があるが、ディスクの容量が限られているため、うまい方法とはいえない。