差分

移動先: 案内検索

記憶管理

4 バイト除去, 2008年11月20日 (木) 15:33
/* MMU */
プロセスは仮想アドレス空間にアクセスしています。MMUがアドレス変換をして仮想アドレス空間より実メモリアドレス空間をマップしてくれています。これによってプロセスが連続したメモリ空間を確保することができるようになります。ですが、プロセスはアクセスしているアドレスは連続していると見えていても、実メモリ上では不連続だったり、あるいは不連続な上に逆転している場合もありえますし、たぶん、実際に動いている最中はそうなっているでしょう。プロセスは仮想アドレス空間にアクセスしています。MMUがアドレス変換をして仮想アドレス空間より実メモリアドレス空間をマップしてくれています。これによってプロセスが連続したメモリ空間を確保することができるようになります。
実メモリに入りきらないものを外部記憶装置に書き出し、必要になったら実メモリに読み込もうというのが仮想記憶です。実メモリアドレス空間より仮想アドレス空間よりが大きい状態になっていれば、実メモリ上にない仮想アドレスを要求することが発生します。アクセス時はアドレス変換を行うためのキャッシュであるTLB 実メモリに入りきらないものを外部記憶装置に書き出し、必要になったら実メモリに読み込もうというのが仮想記憶です。実メモリアドレス空間より仮想アドレス空間よりが大きい状態になっていれば、実メモリ上にない仮想アドレスを要求することが発生します。例えば32ビットアーキテクチャーの場合(2<sup>32</sup> / 4GB ) は仮想記憶空間として1048576(2<sup>20</sup>)のページを持つことになります。もし512MBの物理メモリしか搭載していないマシンは内部で131072ページしか持っていません。  アクセス時はアドレス変換を行うためのキャッシュであるTLB (Translation Lookaside Buffer)にアドレスを問い合わせます。MMUの中にTLBの機能が含まれているタイプ、あるいはCPUチップ上にMMUとは別にTLBを用意しているタイプなどがあります。いずれにしてもTLBにアドレスが見つからなかった場合、つまり実メモリ上に該当ページを見つけられないとMMUはシグナルを発生させます。これをページフォルトいいます。にアドレスを問い合わせます。MMUの中にTLBの機能が含まれているタイプ、あるいはCPUチップ上にMMUとは別にTLBを用意しているタイプなどがあります。いずれにしてもTLBにアドレスが見つからなかった場合、つまり実メモリ上に該当ページを見つけられないとMMUはシグナルを発生させます。これをページフォルトいいます。
== ページング ==
匿名利用者