仮想記憶方式って言われてもピンとこないよな…ということで、個人的にまとめてみました。メモリが高かった時代はよくスラッシングが発生して「処理が遅い」ってことを体験できましたが、32GBのDDR5が1万円を切る時代(2022年現在)になり、メモリが足りなくて遅いということが分からなくなってきた感があります。
仮想記憶方式って?
仮想記憶方式…メモリ(主記憶装置)の容量が足りない時に補助記憶装置(HDDなど)にデータを保存する仕組みのことを指しているのだと思う。
LRUアルゴリズムって?
LRUアルゴリズム…(メモリ上に)使われてからもっとも長い時間あるデータを置き換えるアルゴリズムのこと(LRU = Last Request Used)
インデックス方式って?
インデックス(データの一部)をメモリに展開する方式の1つ。すべてのデータ(テーブルデータ)をメモリ上に展開しておく必要がなくなる=メモリの利用が少なくなる。
ページング方式って?
ページング方式とはメモリ容量が足りない時に補助記憶装置(HDDなどのストレージ)にデータを退避する仕組みのことを指す。
スラッシングとは何か?
ページング方式の仮想記憶において、ページ置き換え頻度が高くなり、システムの性能が著しく下がることがある。これをスラッシングという。
ページフォールトとは?
仮想記憶方式におけるページングが発生しており、データがメモリに見つからなかったときの割り込みや例外を指す。プログラミングの処理スピードが落ちるので、あまり好ましくない状態である。
スラッシングとページフォールトの違いとは?
スラッシングはあくまでページング方式におけるページングの発生頻度が上がること。一方でページフォールトは仮想記憶方式においてページングが発生して生じる割り込みや例外そのものののことなので、意味としては似て異なります。
ページイン/ページアウトとは?
ページイン
ストレージからメモリにデータを取り込む操作のこと。
ページアウト
メモリからストレージにデータを退避させる操作のこと
ページアウトとスワップアウトの違いとは?
ページアウトはメモリからストレージにデータを退避させることだが、スワップアウトは(使用していない)プロセスを(ページ単位ではなく)プロセスごとストレージに退避させることを指します。
まとめ
※「ページフォールトが発生した時にガベージコレクションが必要か?」という情報技術試験の問題があるが「不要」である…というよりガベージコレクションはプログラムが使用しなくなった領域(ゴミ=ガベージ)を捨てることを意味するので、ページング方式とは無関係の仕組みのことを言っている。いわゆる無知な人をひっかける問題なんだと思われる。
※「ページングが発生するたびにフラグメンテーション(メモリの断片化)が発生するか?」という情報技術試験の問題があったが「発生しない」というよりページング方式は固定長であるため、そもそもフラグメンテーションは発生しない。これを言い換えると可変長のデータ保存が行われるので、フラグメンテーションが発生する。
ポイント
ページングによる再配置されたデータは固定長である。
試験的に言えば…仮想記憶におけるページング方式は、ガベージコレクションやフラグメンテーションという言葉(ワード)とは無関係である。
コメント