問題
問題
OSが記憶領域の割当てと解放を繰り返すことによって,細切れの未使用領域が多数できてしまう場合がある。この現象を何というか。
- ア:コンパクション
- イ:スワッピング
- ウ:フラグメンテーション
- エ:ページング
基本情報技術者平成24年秋期 午前問18
基本情報技術者試験や応用情報技術者試験で出題される「実記憶管理」の問題。聞きなれない言葉のため難しく感じますが、「実記憶管理」の各方式の動きを理解してしまえばそこまで難しい問題ではありません。
本記事では、「実記憶管理」について図解で分かりやすく解説しています。
本記事で学べること
- 実記憶管理について理解する
- 実記憶管理の各方式の動きについて理解する
- 基本情報技術者試験の過去問の解き方を学ぶ
目次
実記憶管理とは
プログラム内蔵方式を採用しているコンピュータは、プログラムを実行するときハードディスクなどの補助記憶装置に保存してあるプログラムを主記憶装置(メインメモリ)に読み込んでから実行します。
このようにコンピューターがプログラムを主記憶装置に読み込んで実行する際、記憶領域の割り当てと解放を管理する機能のことを「実記憶管理」といい、実記憶管理には、「単一区画方式」「多重区画方式」「可変区画方式」「オーバーレイ方式」「スワッピング方式」などの区画方式があります。
区画方式の種類
スポンサーリンク
単一区画方式
単一区画方式とは、主記憶装置上の領域を1つの区画(パーティション)とし、その区画にプログラムを読み込む方式のことです。
単一区画方式は、1つの区画しかないため、読み込めるプログラムも1つです。そのため、複数のプログラムを同時に実行する(マルチプログラミング)ことはできません。
多重区画方式
多重区画方式とは、主記憶装置の領域を一定サイズの区画(パーティション)に分け、その領域にプログラムを読み込む方式のことです。
単一区画方式とは違い区画が複数あるので、複数のプログラムを同時に実行することができます。
多重区画方式は仕組みがシンプルなので管理しやすいが、次の図のように区画内に生じた余りのスペースを利用することができません。
また、分割した区画のサイズを超えるプログラムを主記憶装置に読み込むことはできません。
可変区画方式
可変区画方式とは"可変"という名前の通り、必要に応じて区画(パーティション)のサイズを変化させる方式です。
例えば、10MBのプログラムを主記憶装置に読み込むときは、主記憶装置に10MBの区画を作り、その領域にプログラムを読み込みます。
このように可変区画方式では、主記憶装置に読み込むプログラムのサイズに応じて、区画のサイズを変化させることで、主記憶装置の利用効率を向上させています。
フラグメンテーションとコンパクション
可変区画方式で主記憶装置に読み込んだプログラムが読み込んだ順番に終了するとは限りません。
例えば、次の図のように「プログラムA」「プログラムB」「プログラムC」「プログラムD」の順番に主記憶装置上に読み込んだとします。
そして「プログラムB」と「プログラムD」が終了すると、次の図のように「空き領域」に変わります。
その結果、本来であれば主記憶装置上の空き領域の合計は「11MB」なのにもかかわらず、空き領域がバラバラになっているため「10MB」の「プログラムE」が主記憶装置に読み込むことができないという現象が発生します。
スポンサーリンク
このように空き領域がバラバラになってしまう現象をフラグメンテーション(断片化)といい、フラグメンテーションを解消するための手法をコンパクション(メモリコンパクション)といいます。
次の図は、コンパクションのイメージ例です。
コンパクションは、バラバラになった空き領域を連続したひとつの領域にします。そのためには、主記憶装置に読み込まれているプログラムの位置を移動させる必要(別の領域で実行するために、アドレスを新たに割り当てる)があります。これを「動的再配置」といいます。
動的再配置により、プログラムの位置を移動させることでコンパクションが可能となり、バラバラになった空き領域をひとつの連続した空き領域にすることができます。
オーバーレイ方式
オーバーレイ方式とは、プログラムをセグメントという単位に分割し、その時に必要なセグメントだけを主記憶装置に読み込む方式のことです。
プログラムは複数の機能の集合体であり、常に全ての機能が使われているわけではありません。そこでオーバーレイ方式では、プログラムをセグメントという単位に分割し、処理の過程で必要なセグメントだけを主記憶装置に読み込むことで、確保する領域の量を減らしています。
スワッピング方式
スワッピング方式とは、スワップアウトとスワップインを使った方式のことです。
主記憶装置の空き領域が少ないとき、優先度の低いプログラムを一時的にハードディスクなどの補助記憶装置に退避します。この操作を「スワップアウト」といいます。
そして、スワップアウトにより退避したプログラムが必要になった(CPUの使用権が与えられた)時は、退避させたプログラムを再び主記憶装置に読み込み処理を行います。この操作を「スワップイン」といいます。
このように、スワップアウトとスワップインを使った処理のことを「スワッピング」といいます。
基本情報技術者試験 過去問の解説
基本情報技術者平成29年秋期 午前問19
問題
セグメント2を解放すると、空き領域がバラバラになるため、分散する空き領域を集めて一つの連続領域にするには、次の図のように動的再配置でセグメント3の位置を移動します。
設問では、動的再配置をするのに必要なメモリアクセス時間をきいているので、設問の条件よりセグメント3の位置を移動するのにかかる時間を求めます。
1回のメモリアクセスは4バイト単位なので、800kバイトの「セグメント3」を扱うには200,000回のメモリアクセスが必要です。
- 800,000 ÷ 4 = 200,000 (回)
また「セグメント3」を移動するには「読取り(セグメント3を読み込む)→ 書込み(新しい領域に書き込む)」の処理を繰り返す必要があるので、メモリアクセス回数は2倍の400,000回(200,000 × 2)です。
- 200,000 × 2 = 400,000 (回)
読取りと書込みにかかる時間は30ナノ秒なので、動的再配置をするのに必要なメモリアクセス時間は12ミリ秒なのがわかります。
- 400,000 × 30 = 12,000,000(ナノ秒) = 12(ミリ秒)
スポンサーリンク
基本情報技術者平成24年秋期 午前問18
問題
OSが記憶領域の割当てと解放を繰り返すことによって,細切れの未使用領域が多数できてしまう場合がある。この現象を何というか。
- ア:コンパクション
- イ:スワッピング
- ウ:フラグメンテーション
- エ:ページング
基本情報技術者平成24年秋期 午前問18
設問の現象と一致するものはどれか解答のア~エを順番に確認していきます。
ア:コンパクション
不正解:コンパクションとは、主記憶装置上のバラバラになった空き領域をまとめて、連続したひとつの領域にすることです。
イ:スワッピング
不正解:スワッピングとは、主記憶装置の内容を補助記憶装置に一時的に退避するスワップアウトと、退避した内容を主記憶装置に再び読み込むスワップインを利用した手法のことです。
ウ:フラグメンテーション
正解:設問の内容はフラグメンテーションの説明です。
エ:ページング
不正解:ページングとは仮想記憶管理方式のひとつで、仮想アドレス空間を「ページ」と呼ばれる固定長の区画に分割、同時に主記憶装置上も同じように固定長に分割して、このページ単位で主記憶と補助記憶装置のアドレス変換を行う方式です。