前回、科目Bに戻り、スタックとキューの動作をトレースしました。今回は、①に戻り、以前整理したメモリ階層の続きとして、「仮想記憶・ページング方式」を整理します。
仮想記憶とは
仮想記憶とは、実際に搭載されている主記憶(メインメモリ)よりも大きな記憶空間があるかのように、コンピュータに見せかける仕組みのことです。
複数のプログラムを同時に動かそうとすると、主記憶の容量だけでは足りなくなることがあります。仮想記憶は、主記憶に入りきらないデータを、一時的に補助記憶(HDD・SSDなど)に移すことで、限られた主記憶を効率よく使えるようにしています。
ページング方式とは
仮想記憶を実現する代表的な方法が「ページング方式」です。ページング方式では、プログラムのデータを「ページ」と呼ばれる決まった大きさの単位に分割し、そのページ単位で主記憶と補助記憶の間を移動させます。
必要なページだけを主記憶に置いておき、使われていないページは補助記憶側に置いておくことで、実際の主記憶の容量以上のデータを、あたかも同時に扱えているかのように動作させることができます。
ページフォールトとは
プログラムが必要とするデータが、主記憶ではなく補助記憶側のページにある場合、そのページを主記憶に読み込み直す必要があります。この状態を「ページフォールト」と呼びます。
ページフォールトが発生すると、補助記憶からデータを読み込む時間がかかるため、処理が一時的に遅くなります。以前整理したメモリ階層の考え方のとおり、補助記憶は主記憶よりも速度が遅いため、ページフォールトが頻繁に起きると、全体の処理速度が大きく低下してしまいます。
スラッシングという状態
ページフォールトがあまりに頻繁に発生し、ページの入れ替え作業ばかりに時間が取られてしまう状態を「スラッシング」と呼びます。
スラッシングが起きると、本来の処理がほとんど進まなくなってしまうため、コンピュータシステムを設計するうえで避けるべき状態として扱われます。科目Aでは、この現象の名前と、発生する原因(同時に動かすプログラムが多すぎる、主記憶が不足しているなど)を問う問題が出題されます。
学習してみた感想
仮想記憶は、「見せかけの容量を作る」という発想自体が面白く、以前整理したメモリ階層の知識がそのまま生きてくる単元でした。ページフォールトやスラッシングといった用語も、「ページの出し入れがどれだけ発生しているか」という視点で捉えることで、自然につながって理解できました。
次回は、ジョブ管理・タスク管理の考え方を整理します。
