[記事公開日]2014/12/23
[最終更新日]2016/11/26

基本情報技術者試験 4-4(記憶管理)

 

 

 

プログラム記憶方式とは?

プログラムは、「補助記憶装置→主記憶装置→CPU」の順で読み込まれる。

 

補助記憶装置と、主記憶装置では容量が異なるため、高速な動作をする主記憶装置にはあまり多くのプログラムを置けないのが現実である。そのため、大半のプログラム(最近使っていないやつとか)は補助記憶装置に保存されている。

 

高速に補助記憶から主記憶にデータを流すために、様々な工夫がとられている。

 

主にOSや、CPUがその役割を担っている。

 

プログラムがどのようにして実行されるかを説明するならば「プログラム記憶方式」ともいえるが、そのためにメモリをいかに開放させるかを説明しようとすれば「メモリ管理の方法」といえる。

 

プログラム記憶方式は大きく2つのジャンルに分かれる。

・実記憶管理

・仮想記憶管理

 

実記憶管理:

主記憶と補助記憶でプログラムを管理する。

物理的にプログラムを管理する量には限界がある。

現在では仮想記憶管理がメインのため、この方法はほぼ使われていない。

 

仮想記憶管理:

実記憶と仮想記憶でプログラムを管理する。

現在、メインで採用されているプログラム管理方式。

 

<実記憶管理>

1.固定区画方式

主記憶を予め固定長の区画しておき、そこへプログラムをロードする。

*ロード:補助記憶装置に記憶されているプログラムを主記憶装置に読み込むこと

 

単一区画方式:メモリ上には、1つのプログラムをロードする。

 

・多重区画方式:メモリを複数の区画に分ける。区画ごとにプログラムをロードする。

 

固定区画方式の特徴:主記憶の使用効率は悪いが、処理時間は一定で速い。

 

2.可変区画方式

→プログラムの大きさに応じて区画を分ける(主記憶の大きさは可変長となる)。そこへプログラムをロードする。

 

可変区画方式の特徴: 主記憶の使用効率は良いが、処理速度は不定で遅い。

 

–関連用語–

フラグメンテーション(断片化)

主記憶のデータ領域が断片的になってしまい、使える容量が小さくなっていること。

『ガーベジコレクション』や、『メモリコンパクション』により解決させるとよい。

また、『ガーベジコレクション』や、『メモリコンパクション』は『メモリリーク』を防ぐ。

 

・ガーベジコレクション、メモリコンパクション

→意味はほぼ同じ。利用されていないメモリ領域を解放するということ。

 

メモリリーク

主記憶装置(メモリ)が解放されないこと

※プログラムが終了したら、そのメモリ領域を明け渡すことを「メモリの開放」という。

———-

 

3.オーバレイ方式

プログラムを”セグメント”とよばれる排他的な単位に分割する。

実行時に必要な部分だけをロードする。

 

4.スワッピング方式

主記憶上に新規のプログラムが入ってくる。

優先度の低いプログラムは、主記憶から補助記憶へ退避させられる。(スワップアウト)

新規のプログラムが終了すると、退避していたプログラムは補助記憶から主記憶へ戻ってくる。(スワップイン)

 

この一連の流れを「スワッピング」という。

※ページングと間違えやすいので注意!!

 

スワッピングの多発は処理効率の低下に繋がる!!(スワッピングで忙しくて、コンピュータが他の仕事をできなくなる)

 

 

仮想記憶管理とは?

主記憶(実記憶)と磁気ディスク(仮想記憶)を組み合わせ、見かけ上、高速で大容量の空間を提供すること。

 

この方法では、プログラムを実行する際、仮想記憶上の仮想アドレスを実アドレスに変換する必要がある。

 

このアドレス変換を行うハードウェアをDAT(動的アドレス変換機構)という。

 

(実記憶:実アドレスで管理している)

仮想記憶:仮想アドレスで管理している

 

◆仮想記憶管理では、どのようなプログラム記憶方式が採られているか?

→主にページング方式が採用されている。

 

1.ページング方式

→主記憶とプログラムを固定長の「ページ」に分割する。

 

ページングテーブルを設けることによって、ページを実記憶と、仮想記憶の間で入れ替えている。

 

実記憶管理方式では「主記憶装置」や「補助記憶装置」という物理的な装置名を用いて説明するが、

仮想記憶方式では:主記憶→『実記憶』、補助記憶→『仮想記憶』として扱うのが一般的。

*実際には「主記憶」と「補助記憶」なのだが、「仮想記憶」に対して「実記憶」と呼ぶのがふさわしいから?

 

プログラム実行時には、仮想アドレスを実アドレスに変換するため、『DAT』を用いる。

 

~ページング方式の順序~

 

1.実記憶上に必要なページがない(ページフォルトの発生)

 

2.必要なページを仮想記憶から主記憶へ送る(ページイン)

 

3.実記憶で最も使用頻度の低いページを置き換える(ページ置き換え決定)

 

4.実記憶から仮想記憶に戻す(ページアウト)

 

*ページ置き換え決定:ページング方式ではLRU(Least Recently Used)が採用されている

 

*この一連の動作を「ページング」という。

 

ページングの多発はスラッシングへ繋がる

 

スラッシング:

ページングの多発により、実記憶上のメモリが極端になくなくなってしまうこと。他からのジョブを受け付ける余裕もなくなってしまっている状態。

 

・セグメント方式(仮想)

→可変長の「セグメント」という単位でプログラムを分割する。

 


・ページ置き換えのアルゴリズム

FIFO (First in First Out)

→最初に入ってきたのが、最初に出て行く。

 

・LIFO(Last in First Out)

→最後に来たのが、最初に出て行く。

 

LRU(Least Recently Used)

最後に使用してからの期間が最も長い。

 

LFU(Least Frequently Used)

参照回数が最も少ない。

 

基本情報技術者試験 4-4(記憶管理)

・固定区画方式、可変区画方式
↓
フラグメンテーション
↓
ガーベジコレクション、メモリコンパクションで解決
・メモリリーク:メモリ不足
・オーバレイ方式:排他的
・スワッピング方式
・ページング方式 ←スラッシング(メモリ不足)
・DAT(動的アドレス変換機構)
・FIFO (First in First Out)
・LIFO(Last in First Out)
・LRU(Least Recently Used)
・LFU(Least Frequently Used)

 

 

 

以上です

 

 

yamatunes