Web教材一覧ハードウェアとソフトウェア

仮想記憶方式

キーワード

実記憶、仮想記憶、ページング、スワッピング、スラッシング

過去問題:仮想記憶


コンピュータすなわちCPUが処理をするためには,必要とするプログラムやデータがメモリに入っている必要があります。ところが,メモリの容量は比較的小さいので,プログラム全体の容量がメモリ(それを実記憶といいます)の容量を超えることもあります。
 大きいプログラムがあったり,同時に多くのプログラムを実行するときには,メモリの容量が足りなくなってしまいます。パソコンで一人で使っている場合でも,ワープロソフト,表計算ソフト,WWWブラウザなどが開いていることもありましょうし,OSやアンチウィルスソフトなどの多くの常駐プログラムが存在しています。
 これを解決するのが仮想記憶方式です。これによって,プログラマは実メモリの容量や他人の利用を考慮することなくプログラムを構築することができますし,コンピュータの共同利用が可能になったのです。

ページング(スワッピング)

ページングの図解

仮想記憶方式では,実行されるプログラムをページという一定の大きさの単位に分解して,仮想記憶(実際にはディスク)に保管します(このページのサイズはコンピュータのアーキテクチャ -CPUやOSの設計- により決まります。現行のコンピュータでは,ほとんどが4KBを採用)。
 そして,実行に必要なページがメモリに存在しない(ページフォルトという)ときは、そのページを仮想記憶から実記憶に取り込みます。これをページインロールイン)といいます。CPUでの処理が進むにつれて,いろいろなプログラム,あるいは一つのプログラムでのいくつものページが実記憶にページインされます。その結果,実記憶が一杯になると(実際にはある制限値を超えると),不要になった実記憶のページを仮想記憶へ移して空きページを作ります。これをページアウトロールアウト)といいます。ページインとページアウトを総称してページングあるいはスワッピングといいます。
 すなわち,仮想記憶方式とは,プログラムをページに分解して仮想記憶に蓄え,ページングによりその時点で必要なページを実記憶に置くことにより,実記憶の容量よりも大きなプログラム群の処理を可能にする方式だといえます。

FIFOとLRU

ページアウトを行うとき、どのページをページアウトするのかが問題になります。代表的な方法は次の2つです。

例題を掲げます。実記憶のページ枠が3つで、ページがA→B→C→A→D→A→Eの順序で必要になったとします。
         FIFO              LRU     
 A  A─┐              A─┐           
     ┌┴──┬───┬───┐    ┌┴──┬───┬───┐
     │A 1│   │   │    │A 1│   │   │
     └───┴───┴───┘    └───┴───┴───┘
 B      B─┐              B─┐       
     ┌───┬┴──┬───┐    ┌───┬┴──┬───┐
     │A 2│B 1│   │    │A 2│B 1│   │
     └───┴───┴───┘    └───┴───┴───┘
 C          C─┐              C─┐   
     ┌───┬───┬┴──┐    ┌───┬───┬┴──┐
     │A 3│B 2│C 1│    │A 3│B 2│C 1│
     └───┴───┴───┘    └───┴───┴───┘
 A  存在するのでページアウト不要     A─┐参照された    
     ┌───┬───┬───┐    ┌──┴┬───┬───┐
     │A 4│B 3│C 2│    │A 1│B 3│C 2│
     └───┴───┴───┘    └───┴───┴───┘
 D  D─┐ ┌─A              D─┐ ┌─B   
     ┌┴─┴┬───┬───┐    ┌───┬┴─┴┬───┐
     │D 1│B 4│C 3│    │A 2│D 1│C 3│
     └───┴───┴───┘    └───┴───┴───┘
 A      A─┐ ┌─B        A─┐参照された    
     ┌───┬┴─┴┬───┐    ┌──┴┬───┬───┐
     │D 2│A 1│C 4│    │A 1│D 2│C 4│
     └───┴───┴───┘    └───┴───┴───┘
 E          E─┐ ┌─C          E─┐ ┌─C
     ┌───┬───┬┴─┴┐    ┌───┬───┬┴─┴┐
     │D 3│A 2│E 1│    │A 2│D 3│E 1│
     └───┴───┴───┘    └───┴───┴───┘

スラッシング

仮想記憶に置かれたプログラム総量が実記憶の容量をはるかに超えると,ページングが頻繁に発生します。そこ結果,CPUはページング作業のために,本来の処理ができなくなってしまいます。そのように実際の処理効率が低下する現象をスラッシングといいます。利用者からみれば応答が遅いという現象です。さらにページングが増加すると実務的にコンピュータが止まってしまった状況(ホールドしたなどといます)になります。
 パソコンを利用しているときに,パソコンが全然動かなくなってしまう現象がよくあります。その原因の一つにスラッシングが発生していることが多く,動作しているアプリケーションを止めると復旧するのはよく経験することです。それが多く発生するようならば,常駐プログラムを削除したりメモリを増強する必要があるといわれるのもこのためです。