コンテンツにスキップ

メモリ管理@Linuxカーネル

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. メモリ管理の種類

メモリ管理は、物理メモリと仮想メモリで管理方式がある。

アドレス空間管理の種類


01-02. 物理メモリの管理方式

固定区画方式 (同じ大きさの区画に分割する方式)

▼ 単一区画方式とは

物理メモリのアドレス空間を1個の区画として扱い、プロセスに割り当てる。

単一のプロセスしか読み込めず、物理メモリの余ったアドレス空間は利用できない。

単一区画方式

▼ 多重区画方式とは

物理メモリのアドレス空間を複数の同じ大きさの区画に分割し、各区画にプロセスに割り当てる。

複数のプロセスを読み込めるが、単一区画方式と同様に、物理メモリの余ったアドレス空間は利用できない。

多重区画方式


可変区画方式 (様々な大きさの区画に分割する方式)

▼ 可変区画方式とは

物理メモリのアドレス空間を、プロセスの大きさに応じた様々な区画に分割し、プロセスに割り当てる。

固定区画方式とは異なり、物理メモリのアドレス空間を有効に利用できる。

可変区画方式


スワッピング方式

▼ スワッピング方式とは

物理メモリのアドレス空間の区画を優先度の高いプロセスに割り当て、反対に優先度が低いプロセスはストレージ上のスワップファイルに退避させる。

これにより、物理メモリのアドレス空間を確保できる。

スワッピング方式

▼ スワップファイル

ストレージ上に作成された仮想的な領域であり、仮想メモリのように動作する。


オーバーレイ方式

▼ オーバーレイ方式とは


GC:ガベージコレクション

▼ ガベージコレクションとは

確保された物理メモリのうち、解放できるメモリをプロセスから解放する。

物理メモリを使用しているオブジェクトが何かしらから参照されているか否かを元に、解放するか否かを判定する。

▼ アルゴリズム

ガベージコレクションには様々なアルゴリズムがあり、採用されているアルゴリズムは言語ごとに異なる。

▼ Javaの場合

Javaでは、JVM:Java Virtual Machine (Java仮想マシン) が、メモリ領域をオブジェクトに自動的に割り当て、また一方で、不要になったメモリ領域の解放を実行する。

一方で自動的に実行する。


01-03. 仮想メモリの管理方式

ページング方式

▼ ページング方式とは

仮想メモリのアドレス空間を『固定長』の区画 (ページ) 、また物理メモリのアドレス空間を『固定長』の区画 (ページフレーム) に分割し、管理する。

ページの構造

▼ ページイン/ページアウト

仮想メモリは、CPUの処理によって稼働したプロセスの要求を、物理メモリの代理として受け付ける。

ストレージから物理メモリのページフレームにページを読み込むことを『Page-in』という。

また、物理メモリのページフレームからストレージにページを追い出すことを『Page-out』という。

ページインとページアウト

▼ 仮想メモリとのマッピングによる大容量アドレス空間の実現

仮想メモリのアドレス空間を、物理メモリのアドレス空間とストレージにマッピングすることによって、物理メモリのアドレス空間を疑似的に大きく見せかけられる。

仮想メモリとのマッピングによる大容量アドレス空間の再現_1

補足として、富士通の仮想メモリのサイズは、以下の通り。

仮想メモリのアドレス空間の容量設定


セグメント方式

▼ セグメント方式とは

仮想メモリの実装方法の一種。

仮想メモリのアドレス空間を『可変長』の区画 (セグメント) 、また物理メモリのアドレス空間を『可変長』の区画 (セグメント) に分割し、管理する。


MMU:Memory Management Unit (メモリ管理ユニット)

▼ MMUにおける動的アドレス変換機構

MMUによって、仮想メモリのアドレスは、物理メモリのアドレスに変換される。

この仕組みを、『動的アドレス変換機構』と呼ぶ。

メモリ管理ユニット

▼ アドレス変換の仕組み (ページング方式型/セグメント方式型)

(1)

仮想メモリにおけるページの仮想アドレスを、ページ番号とページオフセットに分割する。

ページの構造

(2)

ページテーブルを使用して、仮想アドレスのページ番号に対応する物理アドレスのページ番号を探す。

(3)

物理ページ番号にページオフセットを再結合し、物理メモリのページフレームの物理アドレスとする。

仮想メモリとのマッピングによる大容量アドレス空間の再現_3

▼ ページテーブルにおける仮想ページ番号と物理ページ番号の対応づけ

仮想メモリとのマッピングによる大容量アドレス空間の再現_4


02. アドレス空間のページフォールト

ページフォールトとは

ストレージから物理メモリのアドレス空間への割り込み処理のこと。

CPUによって稼働したプロセスが、仮想メモリのアドレス空間のページにアクセスし、そのページが物理メモリのアドレス空間にマッピングされていなかった場合、ストレージから物理メモリのアドレス空間に『ページイン』が起こる。

ページフォールト


Page Replacementアルゴリズム

ページアウトのアルゴリズムのこと。

方式ごとに、物理メモリのページフレームからストレージにページアウトするページが異なる。

▼ 『FIFO方式:First In First Out』と『LIFO方式:Last In First Out』

p261-2

p261-3

▼ 『LRU方式:Least Recently Used』と『LFU方式:Least Frequently Used』

p261-1

p261-4


03. アドレス空間管理におけるプログラムの種類

Reusable (再使用可能プログラム)

一度実行すれば、再び、ストレージから物理メモリにページインを行わずに、実行を繰り返せるプログラムのこと。

再使用可能


Reentrant (再入可能プログラム)

再使用可能の性質をもち、また複数のプログラムから呼び出されても、互いの呼び出しが干渉せず、同時に実行できるプログラムのこと。

再入可能


Relocatable (再配置可能プログラム)

ストレージから物理メモリにページインを行う時に、アドレス空間上のどこに配置されても実行できるプログラムのこと。

再配置可能