[基本情報技術者試験]イメージで覚える!仮想記憶、ページング方式とは

仮想記憶装置 部品の名前
この記事は約6分で読めます。

先生~、仮想記憶管理が分からないです~(泣)

「仮想的な記憶装置」とか、「あたかも主記憶が増えたように」とか、あまりピンときません…

そうだよね…

実はこの仮想記憶管理は、基本情報の最初の難関なんだ。

でも大丈夫!

今回も分かりやすく説明するから安心してね!

プログラム格納方式

仮想記憶を説明する前に、まずは基本的な、プログラム格納方式を説明するね。

プログラム格納方式は、「どんなプログラムも、一度主記憶に読み込まないと実行できないよ」というものです。

例えば、映画を見たいとき、そのデータは補助記憶装置であるDVDに入っています。

しかしこれを再生しようとするとき、直接CPUからDVDにアクセスするのではなく、

一度DVDの内容を主記憶が読み込んで、その後主記憶がCPUにデータを渡すんです。

つまり、必ず間に主記憶が入るということなんですね。

図で表すと、以下のようになります。

補助記憶装置からCPUまでのデータの流れの画像

さて、この「どんなプログラムも、一度主記憶に読み込まないと実行できないよ」というのを念頭に、仮想記憶方式に移りましょう!

プログラム格納方式 … どんなプログラムも、一度主記憶に読み込んでから実行する方式

仮想記憶装置

仮想記憶装置とは

さあ、いよいよ仮想記憶装置だよ。

できるだけ詳しく書いたから、最後まで読んでみてね!

仮想記憶装置 … 必要最低限のデータだけを主記憶に入れることで、主記憶の容量以上のことができるようになること

「必要最低限?」「主記憶の容量以上のこと?」

どういうこと?

そう思うのも無理はないね。

でも大丈夫!すぐにわかるよ!

仮想記憶装置のしくみ

先ほどお話しした通り、コンピューターは、プログラムを一度主記憶に読み込んでから実行します。

しかしそのプログラムの中には実は「今すぐ使う部分」と、「今すぐには使わない部分

があるんです。

よくあるじゃないですか。大きな箱に入ってる商品でも、開けたらこれだけ?みたいなもの。

プログラムもそんな感じで、「今すぐ使う部分」は、意外と少なかったりします。

プログラムの構成の画像

そこで、仮想記憶装置では、主記憶と補助記憶装置が連携して、

「今すぐには要らない部分」を補助記憶装置に預けているんです。

そして、必要になったときだけ、主記憶に渡して実行しているんです。

図で見てみましょう。

仮想記憶装置の仕組みの画像

こうやって、「今必要な部分」だけを主記憶に入れてプログラムを実行しているんです。

この図では、プログラムは70MBですが、主記憶は40MBの消費だけで実行しています。

もし、もう一つ同じプログラムを実行する場合、今度は80MBの消費で140MBのプログラムを実行できることになります。

すごくないですか?

100MBの主記憶なのに、140MBのプログラムを実行できるんですよ!

仮想記憶装置の流れの画像

なるほど!lこのことを

「あたかも主記憶が増えたように」

って言ってたんですね!

また、仮想記憶装置を使うとき、しばしば主記憶は実記憶と、

補助記憶装置は仮想記憶装置と表現されたりします。これは是非覚えてください!

仮想記憶装置のメリットとデメリット

仮想記憶装置のメリットは、なんといっても主記憶を利用する効率のよさです。

図で示した通り、少ない主記憶の消費量でプログラムを実行できますし、

場合によっては主記憶の容量よりも大きいプログラムを実行出来たりします。

デメリットは、次で説明するスラッシングです。

簡単に言うと、主記憶と補助記憶装置で頻繁にやり取りをするせいで、処理が遅くなることがあるんです。

次のページング方式の中で詳しく説明しますね!

ページング方式

先生、仮想記憶装置の仕組みをもっと教えてください♪

もちろん!じつは先ほどの仕組みだけど、ページング方式っていう名前があるんだ。

ページング方式 … データをいくつかの塊(ページ)に分け、「今必要なものを」主記憶へ、「今要らないもの」を補助記憶装置へ移す方式

この、仮想記憶装置を成り立たせている仕組みの一つに、ページング方式があります。

これがまさに、先ほどからお話ししているような、

データをいくつかの塊(ページ)に分け

「今必要なもの」を主記憶へ、「今要らないもの」を補助記憶装置へ移す方式です。

ページイン、ページアウトの画像

また、この「今必要なもの」を主記憶へ移すことページインと言い、

「今要らないものを」補助記憶装置へ移すことページアウトと言います。

さらに、このページインとページアウトをまとめてページフォルトと言います。

実は、あの便利な仮想記憶装置はこのような仕組みがあったんですね。

でも一つ、注意点があります。

仮想記憶装置は、主記憶と仮想記憶装置が頻繁にデータのやり取りをしています。

そして、このページフォルトが多発すると、コンピューターの処理が遅くなってしまうことがあるんです。

これをスラッシングと言います。

先ほど出てきた仮想記憶装置の注意点ですね。

仮想記憶装置は、便利な反面こんなデメリットもあるんですね。

ページング方式 … データをいくつかの塊(ページ)に分け、「今必要なものを」主記憶へ、「今要らないもの」を補助記憶装置へ移す方式。

主記憶を効率よく使用するメリットがあるが、スラッシングが起こるデメリットもある。

さあ、どうだったかな?

最初は難しかったけどだんだんわかってきたよ!

おっ!よかったよかった!

それじゃあ、練習問題を解いて復習しておいてね。

お疲れさまでした。

練習問題

問題1

ページング方式の仮想記憶装置を用いることによる効果はどれか。 

ア、システムダウンから復旧するときに、補助記憶装置のページを用いることで、主記憶の内容が再現できる。

イ、処理に必要なページを動的に主記憶に割り当てることで、主記憶を効率的に使用できる。

ウ、頻繁に使用されるページを仮想記憶に置くことで、アクセス速度を主記憶へのアクセスよりも早められる。

エ、プログラムの大きさに応じて大小のページを使い分けることで、主記憶を無駄なく使用できる。

(平成26年 春学期 午前 問16)

答)   ページング方式では、処理に必要なものを主記憶に、必要でないものを補助記憶装置に置くことで、主記憶を効率的に使用できます。

問題2

仮想記憶方式における補助記憶措置の役割は?

ア、主記憶からページアウトされたページを格納する。

イ、主記憶が更新されたとき、更新前の内容を保存する。

ウ、主記憶と連続した仮想アドレスを割り当てて、主記憶を拡張する。

エ、主記憶のバックアップとして主記憶の内容を格納する。

(令和3年 秋学期 問19)

答)  仮想記憶方式では、主記憶で今使わないものを補助記憶装置へページアウトします。それを格納することが、補助記憶装置の役割です。