では、今日も授業を始める。今日のテーマはSWAPとページアウトだ。
SWAPとページアウトって何?
SWAPとは仮想メモリのことだ。ハードディスク上のSWAP領域のことだ。
仮想メモリって何?
まず物理メモリから説明する。
何かのプログラムを実行するときは、そのプログラムを物理メモリ上に読み込まなければいけない。
つまり、物理メモリの容量が大きい方がたくさんのプログラムを同時に実行できるので性能が良い。
物理メモリはコンピューターの中に入っている部品の一部だ。
プログラムを実行するときに物理メモリを使うってことね。
うむ。物理メモリにプログラムを読み込んで、物理メモリ上にもってきてからCPUが処理を実行する。
もし物理メモリがたくさん使われていると、物理メモリに保存できなくなる。
物理メモリに保存できないってことは、新しい処理が実行できないってこと?
うむ。そこで、物理メモリにたくさんのプログラムが保存されて、物理メモリの空きがなくなってきたら、
物理メモリの中で、使っていないプログラムを、仮想メモリ(ハードディスク=HDD)へ退避(移動)する。
そうすると、物理メモリに空きができるから、プログラムを保存できて新しい処理ができるようになる。
ハードディスク上に、仮想的なメモリ領域として作成したものが、仮想メモリってこと?
うむ。例えば、物理メモリが4GBの場合、いろいろな処理を実行すると、物理メモリにプログラムが保存されていき、
4GBでは足らなくなってくる。そうすると、利用していないページを、仮想メモリ(ディスク)へ退避する。
このことをページアウトという。
例えば、アプリケーションのExcel(エクセル)を起動している場合、そのExcelのデータを
ページという単位に区切って小さくする。この小さくしたものがページだ。
ページアウトは、ページ単位で小さい単位でデータを、仮想メモリに退避するってことね。エクセルのプログラムすべてをまとめて退避するのではなく、
ページ単位で退避するのね。
うむ。そのデータが必要になったときは、その逆で、仮想メモリから物理メモリへ戻す。これをページインという。
ページアウトされたページは、次回処理が必要になったタイミングで、ページインされて、物理メモリに戻り、処理がされるってことね。
データをそのまま大きい単位で移動せずに、
ページっていう小さい単位で移動して、ページアウトとページインした方が効率的ってことだ。
ページアウトするページをどれにするか選択するためのアルゴリズム(計算方法)には、
FIFO、LRU、LFUがある。例えば、FIFO(フィフォ)は、ファーストインファーストアウトだから先入れ先出しだ。
最初に物理メモリに入ってきたものを先に出して、後に入ってきたものは先に入ったものより後から出す。
LRUは、Least Recently Usedの略で、最も長い時間アクセスがないページをページアウトする方法だ。
LFUは、Least Frequently Usedの略で、最も参照頻度の少ないページをページアウトする方法だ。
ページ単位での退避(ページアウト)をしても、物理メモリが不足している場合、
もっと大きい単位のプログラム単位で、物理メモリから仮想メモリへプログラムごと退避することになる。
これをスワップアウトといっている。
ページ単位がページアウトで、プログラム単位がスワップアウトってことね。
スワップアウトの逆をスワップインという。
仮想メモリから物理メモリへプログラムごと戻す(移動)することをスワップインっていうのね。
スワップアウトが多発するようになると、サーバの処理が重くなってしまう。
スワップアウトやスワップインが多発すると、その処理自体に負荷がかかってしまう。
一般的には、スワップアウトが発生しないように、ページアウトを監視しておいて、ページアウトが多数発生する場合は、メモリ増強などを検討するのが良い。
スワップアウトとページインが多発することをスラッシングという。スラッシングが発生すると処理が重くなってしまう。
あと、物理メモリは、メインメモリと呼ばれたり、主記憶装置とも呼ばれたりするから覚えておいて。
は~い。
では、今日はここまで。
1.物理メモリ=メインメモリ=主記憶装置
2.SWAP=仮想メモリ=ハードディスク上のSWAP領域
3.物理メモリから仮想メモリへページ単位で退避するのをページアウト
4.物理メモリから仮想メモリへプログラム単位で退避するのをスワップアウト
5.ページアウトのアルゴリズムにはFIFO、LRU、LFUがある。