この記事では仮想記憶管理についてIT初心者にも分かりやすく解説します。
仮想記憶管理
- 仮想記憶管理とは、補助記憶装置を使って主記憶装置の容量を拡張する技術。
ページング方式
- CPUは主記憶装置としかやり取り出来ないため、どのデータを主記憶に入れて、どのデータを補助記憶に入れるかを決める必要がある。これをページング方式と言う。
- ページフォールトとは、CPUが主記憶にアクセスした時に必要なデータが存在しないこと。
- ページアウトとは、主記憶から補助記憶にデータを追い出すこと。
- ページインとは、補助記憶から主記憶にデータを入れること。
- ページフォールトが発生すると、CPUの処理時間が延びる。これをスラッシングと言う。
ページ置換えアルゴリズム
- FIFOでは主記憶に最初に入れたデータから追い出す。
- デマンドページングはその時に必要なデータだけを補助記憶から主記憶に持ってくる。
- プリページングはその時に必要なデータ+近々必要になるデータを補助記憶から主記憶に持ってくる。
応用情報では仮想記憶管理に関する問題が出題されます。是非最後までご覧ください。
プログラムは主記憶装置へロードする
私たちが使うプログラムは、普段、補助記憶装置に記録されており、プログラムを実行する時は主記憶装置へロードしてから実行します。CPUは主記憶装置にロードした命令を取り出しながらプログラムを実行していきます。
プログラムを実行するとき、CPUは主記憶装置とやり取りするんですね!
なので、主記憶装置の容量によって同時実行できるプログラムの数が違ってきます。
例えば、容量が16GBの主記憶装置を持つパソコンでは、
7GBのプログラムAと6GBのプログラムBの両方を動かすことが出来ます。
しかし、これに追加で5GBのプログラムCは動かすことが出来ません。
補助記憶装置を使って容量を増やす
主記憶装置だけでは容量が足りないので補助記憶装置を使って容量を拡張するのが仮想記憶管理です。補助記憶装置の一部を主記憶装置のように使うことが出来れば、主記憶装置の容量以上のプログラムを実行することが出来ます。
ただし、要注意なのは、CPUがやり取りをするのは主記憶装置であるということです。
なので、補助記憶装置の一部を使って容量を拡張しますが、いざ実行する命令は主記憶装置に移しておく必要がありますし、逆に実行する予定がない命令は補助記憶装置に置いておく必要があります。このようにデータを主記憶装置や補助記憶装置に再配置する仕組みをページング方式と呼びます。
ページング方式
データを主記憶装置や補助記憶装置に再配置する仕組みをページング方式と呼びましたが、実際、CPUが求めたデータが主記憶装置に無かった場合は、次のSTEPでデータを移し替えます。
- ページフォールト:主記憶装置にデータが存在しないことを確認する
- ページアウト:比較的必要ないデータを補助記憶装置に追い出す
- ページイン:必要なデータを主記憶装置に戻す
この一連の流れをページングと呼びます。
ちなみに、主記憶装置の容量に空きがある場合は、ページアウトする必要が無いので、
ページフォールト → ページインで処理します。
仮想記憶方式にはページング方式とセグメンテーション方式がある
ページング方式では仮想記憶を固定の長さに区切って、そこにプログラムをロードします。一方、セグメンテーション方式ではプログラムの大きさに従って、仮想記憶を区切ります。
ページフォールト
CPUが必要とするデータが主記憶装置に存在しないことをページフォールトと言います。
ページアウト
比較的必要ないデータを主記憶装置から補助記憶装置に追い出すことをページアウトと言います。
どのデータを補助記憶装置に追い出すか
ページアウトするとき、どのデータを補助記憶装置に追い出すのか決定する必要があります。その方法には以下の4つがあります。
- FIFO (First In First Out)
一番最初に主記憶装置に入れたデータを追い出します。 - LIFO (Last In First Out)
一番最後に主記憶装置に入れたデータを追い出します。 - LRU (Least Recently Used)
最も長く使用されていないデータを追い出します。 - LFU (Least Frequently Used)
最も使用頻度が低いデータを追い出します。
ページイン
必要なデータを補助記憶装置から主記憶装置に戻すことをページインと言います。
どのデータを主記憶装置に戻すか
CPUが主記憶装置にデータを要求するとき、その時に必要なデータのみを要求するデマンドページングと必要なデータ+近々必要になるデータも要求するプリページングの2種類の方法を使います。
デマンドページングは必要なデータだけを要求するので、主記憶装置に入るデータ量が最小限になります。しかし、その時に必要なデータだけしか主記憶装置に入らないのでページフォールトの発生率は高くなります。
プリページングは必要なデータ+近々必要なデータも要求するので、主記憶装置に入るデータ量はデマンドページングより多くなりますが、その分、ページフォールトの発生率も低くなります。
スラッシング
ページフォールトが発生すると、命令を実行する前に主記憶装置と補助記憶装置でやり取りをしないといけないので、その分、プログラムの処理に掛かる時間が増えてしまいます。
このページの置換えの発生頻度が高くなり、プログラムの処理能力が低下する現象をスラッシングと呼びます。
応用情報技術者試験での出題例
令和6年度秋期問17、令和3年度秋期問16
応用情報技術者
午前試験 令和6年度秋期問17、令和3年度秋期問16
ページング方式の仮想記憶において,ページ置換えの発生頻度が高くなり,システムの処理能力が急激に低下することがある。このような現象を何と呼ぶか。
ア スラッシング
ウ フラグメンテーション
イ スワップアウト
エ ページフォールト
正解は”ア”
ページフォールトの発生頻度が上がり、処理能力が低下することをスラッシングと言います。
令和6年度秋期問18
応用情報技術者
午前試験 令和6年度秋期問18
仮想記憶方式において,セグメンテーション方式と比較した場合のページング方式の長所はどれか。
ア 記憶領域へのアクセス保護を論理的な単位で行うことができる。
イ 記憶領域をプログラム間で容易に共用することができる。
ウ 実行時に記憶領域の大きさを動的に変えることができる。
エ 主記憶の外部断片化が発生しない。
正解は”エ”
ページング方式では、固定に区切った領域にプログラムを格納します。
一方で、セグメンテーション方式では、プログラムのサイズに合わせて領域を区切り、プログラムを格納します。
セグメンテーション方式ではプログラムのサイズに合わせて記憶領域を区切るため、主記憶装置のプログラムを補助記憶装置に追い出した時、主記憶装置に中途半端な空き領域が空くことがあります。これが外部断片化ですね。
一方、ページング方式の場合、全ての領域のサイズが固定のため、中途半端な空き領域が発生することがありません。
よって、答えはエです。
令和5年度秋期問16
応用情報技術者
午前試験 令和5年度秋期問16
ページング方式の仮想記憶において,あるプログラムを実行したとき,1回のページフォールトの平均処理時間は30ミリ秒であった。ページフォールト発生時の処理時間が次の条件であったとすると,ページアウトを伴わないページインだけの処理割合は幾らか。
〔ページフォールト発生時の処理時間〕
(1)ページアウトを伴わない場合,ページインの処理時間は20ミリ秒である。
(2)ページアウトを伴う場合,置換えページの選択,ページアウト,ページインの合計処理時間は60ミリ秒である。
ア 0.25 イ 0.33 ウ 0.67 エ 0.75
正解は”エ”
ページアウトを伴わないページインだけの処理割合をαとしたとき、
20ミリ秒×α+60ミリ秒×(1-α)=30ミリ秒となり、α=0.75で答えはエとなる。
令和5年度春期問17
応用情報技術者
午前試験 令和5年度春期問17
仮想記憶システムにおいて,ページ置換えアルゴリズムとしてFIFOを採用して,仮想ページを参照列1,4,2,4,1,3を3ページ枠の実記憶に割り当てて処理を行った。表の割当てステップ”3″までは,仮想ページ参照列中の最初の1,4,2をそれぞれ実記憶に割り当てた直後の実記憶ページの状態を示している。残りを全て参照した直後の実記憶ページの状態を示す太枠部分に該当するものはどれか。
正解は”ア”
FIFOなので、最初に主記憶に入れたデータから追い出します。
ステップ3までは実記憶ページの状態が記載されているので、ステップ4からどうなるか考えましょう。
【ステップ4】
仮想ページ番号4を参照していますが、実記憶ページに4があるのでページフォールトは発生しません。よって、実記憶ページの状態は〔1,4,2〕のままです。
【ステップ5】
ステップ4と同様、参照する仮想ページ番号1が実記憶ページに存在するので、実記憶ページの状態は〔1,4,2〕のままです。
【ステップ6】
仮想ページ番号3を参照していますが、実記憶ページに3は存在しないのでページングする必要があります。FIFOなので、最初に主記憶に入れた仮想ページ番号1を追い出して、仮想ページ番号3を入れます。よって、実記憶ページの状態は〔3,4,2〕になり、答えはウです。
令和5年度春期問18
応用情報技術者
午前試験 令和5年度春期問18
仮想記憶方式に関する記述のうち,適切なものはどれか。
ア LRUアルゴリズムは,使用後の経過時間が最長のページを置換対象とするページ置換アルゴリズムである。
イ アドレス変換をインデックス方式で行う場合は,主記憶に存在する全ページ分のページテーブルが必要になる。
ウ ページフォールトが発生した場合は,ガベージコレクションが必要である。
エ ページングが繰り返されるうちに多数の小さな空きメモリ領域が発生することを,フラグメンテーションという。
正解は”ア”
ちなみに、ページングで交換されるデータは固定長なのでフラグメンテーションは発生しません。
令和4年度秋期問17
応用情報技術者
午前試験 令和4年度秋期問17
ほとんどのプログラムの大きさがページサイズの半分以下のシステムにおいて,ページサイズを半分にしたときに予想されるものはどれか。ここで,このシステムは主記憶が不足しがちで,多重度やスループットなどはシステム性能の限界で運用しているものとする。
ア ページサイズが小さくなるので,領域管理などのオーバーヘッドが減少する。
イ ページ内に余裕がなくなるので,ページ置換えによってシステム性能が低下する。
ウ ページ内の無駄な空き領域が減少するので,主記憶不足が緩和される。
エ ページフォールトの回数が増加するので,システム性能が低下する。
正解は”ウ”
ほとんどのプログラムの大きさがページサイズの半分以下ということは、現在は無駄に主記憶の領域をプログラムの為に準備していることになります。
なので、ページサイズを半分以下にすれば無駄に確保していた主記憶の領域を解放できるので、主記憶不足が緩和できます。
令和3年度秋期問17
応用情報技術者
午前試験 令和3年度秋期問17
主記憶へのアクセスを1命令当たり平均2回行い,ページフォールトが発生すると1回当たり40ミリ秒のオーバヘッドを伴うシステムがある。ページフォールトによる命令実行の遅れを1命令当たり平均0.4マイクロ秒以下にするために許容できるページフォールト発生率は最大幾らか。ここで,他のオーバヘッドは考慮しないものとする。
ア 5×10⁻⁶ イ 1×10⁻⁵ ウ 5×10⁻⁵ エ 1×10⁻⁴
正解は”ア”
ページフォールトの発生率をαとすると、
1命令当たりの命令実行の遅れ=40ミリ秒×α×2=80ミリ秒×α=80000マイクロ秒×αです。今、1命令当たりの命令実行の遅れを0.4マイクロ秒以下にする必要があるため、
α=5×10⁻⁶となり、答えはアとなります。
令和3年度秋期問19
応用情報技術者
午前試験 令和3年度秋期問19
仮想記憶方式における補助記憶の機能はどれか。
ア 主記憶からページアウトされたページを格納する。
イ 主記憶が更新された際に,更新前の内容を保存する。
ウ 主記憶と連続した仮想アドレスを割り当てて,主記憶を拡張する。
エ 主記憶のバックアップとして,主記憶の内容を格納する。
正解は”ア”
仮想記憶方式において、補助記憶装置は主記憶装置からページアウトされたページを格納する役割を持ちます。
令和3年度春期問19
応用情報技術者 午前試験
令和3年度春期問19
ページング方式の仮想記憶において,ページアクセス時に発生する事象をその回数の多い順に並べたものはどれか。ここで,A≧Bは,Aの回数がBの回数以上,A=Bは,AとBの回数が常に同じであることを表す。
ア ページアウト≧ページイン≧ページフォルト
イ ページアウト≧ページフォールト≧ページイン
ウ ページフォールト=ページアウト≧ページイン
エ ページフォールト=ページイン≧ページアウト
正解は”エ”
ページフォールトが発生すれば絶対にページインをする必要があるので、
ページフォールト=ページインになります。
また、主記憶装置に空き領域があればページアウトはする必要が無いので、
ページイン≧ページアウトになります。