こんにちは😀
今回は、実記憶管理の役割や方法に関してまとめました。
限られた主記憶空間を効率よく使えるようにプログラムに割り当てる動作を、実記憶管理の役割になります。
現在のコンピュータだと、プログラムを主記憶上にロードしてから実行することになります。
固定区画方式とは
主記憶に固定長の区画を設けて、そこにプラグラムを読み込む管理方式を、固定区画方式と言います。
またこの区画のことをパーテションと呼ぶこともあります。
全体を単一の区画とする単一区画方式と複数の区画に分ける多重区画方式があります。
ただ、プログラムを読み込んだ後に区画内に生じた余りスペースは使用することができず、区画サイズ以上のプログラムを読み込むこともできなくなります。
可変区画方式とは
主記憶を最初に固定長で区切ってしまわず、プログラムをロードするタイミングで必要なサイズに区切る管理方式を、可変区画方式と言います。
プログラムが必要とする大きさで区画を区切り、そこにプログラムをロードします。
この方式だと、区画内に余剰スペースはできないので、固定区画方式よりも主記憶の利用効率は良くなります。
フラグメンテーションとは
可変区画方式で実行する場合、主記憶上にプログラムを隙間なく詰め込むことができますが、必ずしも詰め込んだ順番にプログラムが終了するとは限りません。
その場合、主記憶の空き容量自体がプログラムの実行に足るサイズであっても、それを連続した状態で確保することができなくなります。
この現象をフラグメンテーションといいます。
このフラグメンテーションを解消するためには、ロードされているプログラムを再配置する必要があります。
再配置により、連続した1つの領域にする操作を、メモリコンパクションと言います。
または、ガーベージコレクションとも呼ばれます。
オーバレイ方式とは
実行したいプログラムのサイズが主記憶の容量を超えている場合、ロードを可能にするための手法に、オーバーレイ方式があります。
この方式では、プログラムをセグメントという単位に分割して、その時に必要なセグメントだけを主記憶上にロードして実行します。
スワッピング方式とは
マルチプログラム環境では、優先度の高いプログラミングによる割り込みなどが発生した場合、現在実行中のプログラムを中断させて切り替えを行います。
それが不可能な場合は、優先度の低いプログラムが使用していた主記憶の内容を、いったん補助記憶装置に丸ごと退避させることで空き容量を作ります。
この方法を、スワップアウトと言います。
退避させたプログラムに再びCPUの使用権が与えられる時に、退避させた内容を補助記憶装置から主記憶へとロードし、中断箇所から処理を再開します。
これをスワップインと言います。
スワップアウトとスワップインを合わせた方式を、スワッピングといいます。
この方式が発生すると、主記憶の代用として低速な補助記憶装置へのアクセスを行うことになるので、処理速度が極端に遅くなることに注意が必要です。
今回の一言・・・
プログラムを実行する上で、主記憶の領域を確保する必要がありますが、状況に応じてその確保方法がいくつかあることがわかります。
効率的にプログラムを動かせる選択ができるようここら辺も押さえておきたいところです。
ここまで読んでくれてありがとう。
では、また次回。
コメント