応用情報処理技術者試験の対策サイトです。 応用情報処理技術者試験の午前問題を中心とした基礎用語の解説を中心に掲載します。書き始めたばかりなので、内容はまだまだ不十分です。
カテゴリ:

4.ソフトウェア > 4.2 記憶管理(実記憶管理)

問2 オーバレイに関する次の記述を読んで,設問1,2に答えよ。

 近年,組込み(embedded)システムに利用されるプログラムの規模拡大に伴い,オーバレイが必要になってきている。オーバレイとは,プログラムを幾つかのオーバレイセグメント(以下,単にセグメントと呼ぶ)に分割しておき,OSがプログラムの実行に必要なモジュールを含むセグメントだけを主記憶領域に読み込んで実行する方法である。
 (1)10個のモジュールA〜Jで構成されるプログラムがあり,各モジュールは図1に示す呼出し構造になっている。例えば,モジュールGは二つのモジュールH及びIを呼び出す。
17-FE問2-4
図1 モジュールの呼出し構造


 (2)このプログラムのモジュールの実行順序は,図2のとおりである。
17-FE問2-5
図2 モジュールの実行順序

 (3)A〜Jの各モジュールの実行に必要な主記憶領域の大きさは,表のとおりである。なお,セグメントの大きさは,セグメントを構成するモジュールの大きさを合計したものになる。

        表 モジュールの大きさ
モジュール
A
B
C
D
E
F
G
H
I
J
大きさ(Mバイト)
10
8
6
5
6
4
6
2
3
15


設問1 次の記述中の[    ]に入れる正しい答えを,解答群の中から選べ。

 プログラムのオーバレイ構造と各セグメントを構成するモジュールを図3に示す。図3は,モジュールDがモジュールAから呼び出されたとき,主記憶領域にセグメントP0及びP2が読み込まれていることを表している。また,セグメントP1,P2及びP3は,主記憶領域の同じ番地を先頭としてそれ以降に読み込まれることを表している。
17-FE問2-1
図3 オーバレイ構造とセグメント


 このプログラムを実行したとき,プログラムの実行が終了するまでに,セグメントはP0,P1,P2,P3の順に,計4回だけ主記憶領域に読み込まれる。図3のオーバレイ構造で実行するのに必要な主記憶領域は,[    ]Mバイトである。

解答群
ア 24   イ 25   ウ 35   エ 36
オ 37   カ 38   キ 39   ク 40
正解は、エです。

設問2 次の記述中の[    ]に入れる正しい答えを,解答群の中から選べ。

 プログラムの実行時に利用する主記憶領域を減らすことが必要になったので,オーバレイ構造及びセグメントの見直しを行って,図4と図5に示す二つの案を作成した。
17-FE問2-2
図4 オーバレイ構造とセグメント案1

17-FE問2-3

図5 オーバレイ構造とセグメント案2

 図3のオーバレイ構造に比べて,プログラムの実行時に利用する主記憶領域を,案1では10 Mバイト,案2では[  a  ]Mバイト減らすことができる。
 プログラムを実行したとき,図2中のαの位置にあるモジュールFの実行が終了するまでに主記憶領域にセグメントが読み込まれる回数は,案1では合計6回,案2では合計[  b  ]回である。
 プログラムの実行が終了するまでに主記憶領域にセグメントが読み込まれる回数は,図3のオーバレイ構造に比べて,案1では合計[  c  ]回,案2では合計6回増える。

aに関する解答群
ア 10   イ 11   ウ 12
エ 13   オ 14   カ 15

b,cに関する解答群
ア 1   イ 2   ウ 3   エ 4   オ 5
カ 6   キ 7   ク 8   ケ 9   コ 10
正解は、
a イ
b キ
c エ です。

応用情報技術者試験のシラバスでは、実記憶管理に関して、以下の記載があります。
実記憶管理
記憶領域の管理方式である固定区画方式,可変区画方式など,実アドレス空間の割当て方式の特徴,フラグメンテーションとその対策を理解する。また,主記憶装置を効率良く使うためのスワッピングとオーバレイを理解する。

用語例 実アドレス方式,単一連続割当て方式,記憶域管理アルゴリズム(ファーストフィット,ベストフィット,ワーストフィット),メモリコンパクション,ロールイン,ロールアウト,スワップイン,スワップアウト,セグメント方式,コンパクション
応用情報技術者試験を勉強する成子 

そもそも、「実記憶管理」ってどういう意味ですか?
CPUが頭脳で、メインメモリが机の上の作業場所に例える場合があります。
仕事をするときに、机の上の書類で作業するのですが、机の広さが足らない時がありませんか? 

その狭いスペース(メインメモリの領域)を効率良く使うための仕組みが実記憶管理です。
具体的には、スワッピングとオーバレイ、この後に記載する仮想記憶管理があります。

スワッピングに関して過去問(H20秋SW午前問27)では、「プログラムを一時的に停止させ,使用中の主記憶の内容を補助記憶に退避する。再開時には,退避した内容を主記憶に再ロードし,元の状態に戻す」とあります。

オーバレイに関して過去問(H20秋SW午前問27)では、「あらかじめプログラムを幾つかの単位に分けて補助記憶に格納しておき,プログラムの指定に基づいて主記憶に読み込む」とあります。
ようは、全てを一度に読み込むのではなく、必要なプログラムだけを主記憶(メインメモリ)に読み込むのです。
スワップ

過去問(H20秋SW午前問27)では、スワッピングに関して、「プログラムを一時的に停止させ,使用中の主記憶の内容を補助記憶に退避する。再開時には,退避した内容を主記憶に再ロードし,元の状態に戻す」とあります。

H16秋AD午前
問13 仮想記憶方式においてスワッピングが多発しているシステムに対して,主記憶を増設することの効果はどれか。
ア 画像修正ソフトで取り扱える色の数が増える。
イ 表計算ソフトの計算精度が向上する。
ウ より大きいサイズのファイルが処理できるようになる。
エ ワープロソフトが速く動作するようになる。

H20秋AD
問10 仮想記憶機能をもつサーバで新しいプログラムを追加して実行したところ,スワッピングが多発し,以前から動作しているプログラムの処理効率が低下した。解決策として,最も適切なものはどれか。
ア 高速なCPUに変更する。
イ 高速な主記憶に変更する。
ウ 磁気ディスク装置を増設し,補助記憶の容量を拡大する。
エ 主記憶を増設する。

過去問(H20秋SW午前問27)では、オーバレイに関して、「あらかじめプログラムを幾つかの単位に分けて補助記憶に格納しておき,プログラムの指定に基づいて主記憶に読み込む」とあります。

過去問(H17秋FE午後問2)では、オーバレイに関する具体的な問題があります。冒頭の用語解説だけ引用すると、以下です。
オーバレイとは,プログラムを幾つかのオーバレイセグメント(以下,単にセグメントと呼ぶ)に分割しておき,  OSがプログラムの実行に必要なモジュールを含むセグメントだけを主記憶領域に読み込んで実行する方法である。
実際の過去問にもチャレンジしてください。
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2005h17_2/2005h17a_fe_pm_qs.pdf

応用情報技術者試験を勉強する成子 

なぜオーバレイ(重ね合わせる)というのですか?




まあ、なんとなくイメージしにくいですね。必要なプログラムを上書きしていくからです。過去問(H22春ES午前2
問7)では、「記憶管理におけるオーバレイ方式の記述:として「必要がなくなったセグメントの領域に,次に実行するセグメントが上書きされる」と述べています。

フラグメンテーションに関して、過去問(H25秋AP午後問2)では、「メモリの確保や解放の処理を繰り返すと,サイズの小さな空きメモリが分散してしまい,サイズの大きな空きメモリの確保が難しくなることがある。このような現象をフラグメンテーションと呼ぶ。」とあります。


fragment・・・断片的。つまり途切れ途切れ

メモリ領域を以下のように3つの処理が使っていたとします。
(処理1)(処理2)(処理3)
■■■■|■■■■■■|■■|・・・
処理2が終わると
■■■■|        |■■|・・・
ここで、”処理2”よりメモリ領域の使用量が少ない新しい”処理4”が入ると
■■■■|■■■■  |■■|・・・
このように、メモリ領域が断片化する

対策はメモリコンパクションです。

■H27春DB午前
問5 フラグメンテーションに関する記述のうち,適切なものはどれか。
ア 可変長ブロックのメモリプール管理方式では,様々な大きさのメモリ領域の獲得や返却を行ってもフラグメンテーションは発生しない。
イ 固定長ブロックのメモリプール管理方式では,可変長ブロックのメモリプール管理方式よりもメモリ領域の獲得と返却を速く行えるが,フラグメンテーションが発生しやすい。
ウ フラグメンテーションの発生によって,合計としては十分な空きメモリ領域があるにもかかわらず,必要とするメモリ領域を獲得できなくなることがある。
エ メモリ領域の獲得と返却の頻度が高いシステムでは,フラグメンテーションの発生を防止するため,メモリ領域が返却されるたびにガーベジコレクションを行う必要がある。

⇒正解は、ウ

・仮想記憶方式に関する過去問(H28春AP午前問18)に、以下の選択肢があります。どこが間違っているのでしょうか。  

エ ページングが繰り返されるうちに多数の小さな空きメモリ領域が発生することを,フラグメンテーションという。

ページングはページ単位で記憶領域を管理するため、小さな空きメモリ領域が発生しません。

H24秋AP午前

問18 ページング方式の仮想記憶を用いることによって,フラグメンテーションの問題を解決できる理由はどれか。
ア 一連のプログラムやデータを,不連続な主記憶に割り付けることができる。
イ 仮想記憶のページ数を主記憶のページ数よりも多くすることができる。
ウ プログラム全体を1ページに割り付けることができる。
エ プログラムのローディング時に主記憶を割り付けることができる。

⇒正解はア

過去問(H25秋AP午後問2)を見てみましょう。
〔メモリコンパクション〕
 メモリの確保や解放の処理を繰り返すと,サイズの小さな空きメモリが分散してしまい,サイズの大きな空きメモリの確保が難しくなることがある。このような現象を[ コ ]と呼ぶ。このとき,割当て済みのメモリブロックが連続するようにメモリブロックを移動し,移動したメモリブロックの後ろに大きな空きメモリを確保することをメモリコンパクションという(図5参照)。

memori

コンパクション(圧縮)という言葉がマッチしませんが、フラグメント化(断片化)した領域を再整理するものです。
応用情報技術者試験を勉強する成子
Windowsの機能で、デフラグというのもありますよね。
デフラグはデ・フラグメンテーションなので、逆フラグメントという意味ですから、同じことですか?
デフラグとメモリコンパクションは、どちらも考え方は同じで、断片化した領域を集めて再配置するものです。
メモリに関するものがメモリコンパクションで、Windowsのデフラグにあるように、ディスク(ファイルシステム)に関するものがデフラグと考えればいいのではないでしょうか。

デフラグメンテーションに関して
■過去問(H19春AD午前問2)
問2 磁気ディスクのデフラグメンテーションをすることによって,期待できる効果はどれか。
ア エラーのあるクラスタを代替クラスタに置き換える。
イ ファイルの見かけの容量が減少する。
ウ ファイルの読み誤りが減少する。
エ ファイルを連続的に読み込むときのアクセス時間が短くなる。

⇒正解は、エ

■H20春AD午前
問2 デフラグメンテーションの説明はどれか。
ア エラーが起きるクラスタを別クラスタに再割付けする。
イ 使われていないクラスタを再配置する。
ウ 破損しているクラスタを削除する。
エ 物理的に分散して格納されているファイルを連続した領域に再配置する。

⇒ 正解はエ

あまり試験では問われないかもしれません。優先度は下げてもいいでしょう。

これと似たものに、フラグメンテーションの対策となるメモリコンパクションがあります。情報技術者試験でも、両者を分けていますので、別物と考えてください。

ガーベジコレクション(garbage collection)
garbage=ゴミ 
collection=収集
ゴミの収集つまり、どこからも使用されなくなったメモリ領域(garbage)を集めて(collection)、再び利用できるようにします。
ガーベジコレクションに関して過去問(H25秋AP午前問18)では、「記憶領域の動的な割当て及び解放を繰り返すことによって,どこからも利用できない記憶領域が発生することがある。このような記憶領域を再び利用可能にする機能」と述べられています。
また、過去問(H24秋高度午前1問7)では、「プログラム実行時の主記憶管理に関する記述」として,「プログラムが使用しなくなったヒープ領域を回収して再度使用可能にすることを,ガーベジコレクションという」と述べています。

試験には出ないでしょうが、「メモリリーク(Memory leak)」という言葉があります。”秘密をリークする”など、leakは漏れるの意味です。。過去問(平成18年午前問4)を参考にすると、メモリーリークは「アプリケーションやOSバグなどが原因で,動作中に確保した主記憶領域が解放されないことであり,これが発生すると主記憶中の利用できる部分が減少する」ことです。この対策の一つが、ガーベジコレクション(garbage collection)です。

このページのトップヘ