「メモリのページング方式管理と断片化」をシミュレーターで体感してみよう!
今回はコンピューターでのメモリの管理の仕方の基礎を解説していきます!
目次
コンピューターは「有限のメモリ」を「複数のタスク(アプリ)」に配分する処理をしている
コンピューターやスマホのメモリはもちろん有限で、保存できるサイズが決まっています。
それに対して、コンピューターでは複数のタスクが動きます。そのメモリ領域をどう分配するかが「メモリ管理」になります!
「ページング方式」=最小の区画を決めて管理する方式
メモリは有限しかないので、自由にタスク(アプリ)に使わせると、めちゃくちゃな状態になります。
そのため、コンピューターのOSでは「ページング方式=最小の区画を決めて管理する方式」をとります。
その例が↓のようなものです。アルファベットはタスク(アプリ)の種類を指します。メモリを一定の区画ごとにわけて、各区画をどのタスク(アプリ)が使うのか決める形になります。
このようにすると、ページという大きな区画単位で誰が使っているか管理できるので、楽に管理できるようになるんです!ちなみに、windowsでは1ページ=4KBで管理しています。
また、当たり前ですが、同じ領域を二つのタスク(アプリ)が同時に使うなどないように管理/調整してるのです!
タスク(アプリ)は、基本は連続した領域が確保されるが、稼働が長くなるとページが断片化していく
ページには番地(アドレス)がつけられて管理されます。
今回は↓のように左上が一番先頭で、右にいくほど番地が大きくなっていくように図で表しています。
(タスクMは途切れているように見えますが、1行目最後と2行目最初はつながってると見てください)
最初は↑のように順番に配置されているのです。各タスク(アプリ)の領域は連続になっていますよね。ただ、タスク(アプリ)は消えたり、稼働開始したりするので、↓のように段々と穴あき状態になっていきます。
そして、空いている領域に新しく稼働するを配置していくと、、、↓のように断片化していきます。
このように、普通に管理していると、自然と各タスク(アプリ)の領域は非連続になり、断片化してしまうというんです!
「メモリのページング方式管理と断片化」をシミュレーターで確認してみよう!
実際にタスク(アプリ)がメモリの領域をとっていく状況を見てみましょう!
- ↓のメモリ区画上を、タスク(アプリ)が稼働と停止を繰り返します
- 各タスク(アプリ)は色とアルファベットで分けて表しています
- 実行を押すと、稼働開始/リセットできます
- メモリは上位から順に、空いている区画を使っていきます
- 時間がたつと、断片化していく様子を確認しましょう
まとめ:「メモリのページング方式管理と断片化」
コンピューターは↓のようにページという区画で管理します。
この管理の上でタスク(アプリ)が起動停止を繰り返していると、、、↓のような断片化が起こります。
このような断片化がおこるため、このままだと「タスク(アプリ)がメモリが断片化して、連続でないことを意識しないといけない」ことになります!
それを解決するのが、次のページで解説する「仮想アドレス方式」になります!
- コンピューターはメモリをページという区画で管理している
- 起動停止を繰り返していると、自然に断片化してくる
⇒「主記憶管理」カテゴリ記事一覧
その他関連カテゴリ