[基本情報技術者試験]可変区画方式、フラグメンテーション、メモリコンパクションとは

可変区画方式 ○○方式
この記事は約4分で読めます。

先生、前回の固定区画方式の、

領域が無駄になってしまう部分を解消した方式があると聞きました。

確か、可変区画方式って言ってましたよね?

よく覚えてたね!

それじゃあ今回は可変区画方式を学んでいこう!

まだ固定区画方式を読んでない方は、下のリンクから読んでみてね。

可変区画方式

可変区画方式とは

可変区画方式とは、必要に応じてメモリの部屋の大きさを変えられる方式です。

今までの固定区画方式は、部屋の大きさを変えられず、また、部屋の大きさ以上のものは入れられませんでした。

そのため、無駄な領域が多かったり、部屋の大きさ以上のものは入れられなかったのです。

しかし、可変区画方式ではそのような不便さを解消することができるのです。

図で見てみましょう!

可変区画方式の説明の画像

こんな感じで、細かく分けることもできます。

へぇ~、プログラムの大きさにフィットして、

部屋の大きさも変わるんですね。

可変区画方式のメリット

可変区画処理のメリット

可変区画方式のメリットは、以下になります。

メリット1:メモリの使用効率が良く無駄な領域が出にくい

先ほどもお話しした通り、固定区画方式では、1つの部屋には1つしかプログラムが入らないため、

無駄な領域が発生してしまいました。

しかし可変区画方式では、部屋の大きさを自由に変えられるため、無駄な領域が出にくいのです。

また、「1つ1つの部屋のサイズが小さくて、プログラムが入らない」なんてこともありませんね。

可変区画方式のデメリット

可変区画処理のデメリット

可変区画方式のデメリットは2つあります。

デメリット1:処理速度が遅い

デメリット2:フラグメンテーションが発生する

デメリット1:処理速度が遅い

固定区画方式は、あらかじめ1つ1つの部屋の大きさが決まっていました。

そのため処理速度は一定で速かったのですが、

可変区画方式は1つ1つの部屋の大きさがぐちゃぐちゃなのです。

なので、固定区画方式に比べて処理速度が遅くなってしまいます。

デメリット2:フラグメンテーションが発生する

2つ目のデメリットは、フラグメンテーションが発生するという点です。

フラグメンテーションは、簡単に言うと、データを削除したときに未使用領域が残ってしまうことです。

詳しい説明はこの後にしますね。

フラグメンテーションとメモリコンパクション

フラグメンテーション

フラグメンテーションとは、データを削除したときに、メモリの間に空き容量が残ってしまうことです。

こちらの図を見てください。

可変区画方式の説明の画像

こちらは先ほど使用した図と同じものです。

ここで、このうちBとCのデータを削除して、新しく50MBのデータを入れたいと思います。

すると、以下のようになります。

フラグメンテーションの解説の画像

データを削除したことで、メモリの間に空き容量が残ってしまいましたね。

これでは50MBのデータを入れられません。

このことをフラグメンテーションと言います。

結局固定区画方式と同じことが起きてますね。

でも大丈夫!

可変区画方式にはそれを解決する方法があるんだ。

メモリコンパクション

フラグメンテーションの対策として、可変区画方式にはメモリコンパクションがあります。

メモリコンパクションは、データを詰めて空き容量をまとめることです。

文字通り、メモリがコンパクトになっていますね!

メモリコンパクションの解説の画像

このように、メモリを詰めることで50MBのデータも無事に入れることができました!

まとめ

可変区画方式は、入れるメモリの大きさによって、部屋の大きさも変わるんですね。

それに、隙間が発生してもメモリコンパクションで

解消できるところが便利ですね。

そうだね。

記憶方式には、他にもスワッピング方式とオーバーレイ方式があるから、

一緒に学んでみよう!

可変区画方式は、データのサイズによって後から部屋の大きさを決めます

そのため、メモリの使用効率が良いというメリットがありますが、

処理速度が遅いことと、フラグメンテーションが起こるというデメリットもあります。

フラグメンテーションが起こったら、メモリコンパクションが有効です。

練習問題

問題1

プログラムのモジュール単位に主記憶を割り当てる可変区画方式のコンピュータにおいて,五つのモジュールA~Eを次の順序でロードしたり解放したりする。最後のモジュールEをロードした時点で,主記憶の空き領域は何か所存在するか。ここで,主記憶は500kバイトで初期状態では何もロードされていない。また,モジュールは空き領域の先頭からロードするものとし,その他の条件は考慮しない。

〔ロードと解放の順序〕
Aのロード→Bのロード→Cのロード→Bの解放→Dのロード
→Aの解放→Eのロード

〔モジュールの大きさ〕

試験問題

(出典:平成19年度 春学期 午前 問30)

ア、3か所  イ、4か所  ウ、5か所  エ、6か所

答)ア、3か所      

可変区画方式の試験問題の解説