基本情報技術者 ~ソフトウェア[4]~



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



これまでソフトウェアについて色々学んできました。



〜ソフトウェアとは〜

potato-head0809.hatenablog.com



〜ジョブ管理〜

potato-head0809.hatenablog.com

 



〜タスク管理〜

potato-head0809.hatenablog.com



今回は実記憶管理について学んでいこうと思います。



では早速始めていきましょう!



実記憶管理



主記憶装置の空間は限られています。



それを効率よく使えるようにするのが実記憶装置の役割になります。



現在使われているプログラム内臓方式のコンピュータではプログラムを実行するときに



主記憶装置にロードしてから実行するので実記憶管理の役割が重要になってきます。



f:id:potato_head0809:20201206220301p:plain




実記憶管理には2つの方式があります。



「固定区画方式」と「可変区画方式」です。



固定区画方式



固定区画方式はさらに、「単一区画方式」と「多重区画方式」に分けられます。



単一区画方式



f:id:potato_head0809:20201206220632p:plain




単一区画方式では1つのプログラムしかロードすることができません。



よって、これまで学んできたマルチプログラミングには使えません。



多重区画方式



f:id:potato_head0809:20201206220808p:plain




図のようにあらかじめ決めたサイズに分割しておきます。



それにより、複数のプログラムをロードすることができます。



しかし問題点もあり、主記憶装置に読み込むとき、



必ずちょうど良いサイズのプログラムで一杯になることはないです。



その読み込んだ後に区画内で空いたスペースは使用することができません。



f:id:potato_head0809:20201206221209p:plain




主記憶の利用効率はあまりよくありません...。



可変区画方式



では「固定区画方式」とは異なる「可変区画方式」について見ていきましょう。



可変区画方式の特徴としては、あらかじめ区画を分割するサイズを決めるのではなく、



プログラムをロードするタイミングで必要なサイズに区切ります。



f:id:potato_head0809:20201206221902p:plain




これにより、区画内に無駄なスペースが生じません。



固定区画方式よりも主記憶の利用効率が良いことになります。





さて、これまで主記憶装置にロードする際の



区画について見てきましたが、便利な可変区画方式であっても



問題は無いということではありません。



フラグメンテーションという現象が起きてしまいます。



なぜなら、主記憶内にあるプログラムは必ずしも順番に実行されるわけではありません。



f:id:potato_head0809:20201206222345p:plain




順番に実行されないので当然上の図のような構図になってしまいます。



ここでフラグメンテーションという現象が起きてしまいます。



f:id:potato_head0809:20201206222516p:plain




ロードしたいプログラムの容量分は主記憶装置に空きがあるはずなのに



フラグメンテーションの影響でロードできないということになります。



では、どうすれば良いのか...。



そこでメモリコンパクションという機能です。



簡単に説明すると、バラバラになったプログラムを綺麗に整頓してくれます。



f:id:potato_head0809:20201206222728p:plain




そうすることで、先ほどは読み込めなかったプログラムが



整頓することで読み込めるようになります。



さいごに。



今回は実記憶管理について見ていきましたが、



オーバーレイ方式やスワッピング方式などもあります。



それらについては今後、説明できればと思います。



今回も最後までご覧頂きありがとうございました!



宜しければツイッター(@potato_head0809)のフォローをお願い致します!



次回もよろしくお願い致します。