ページングと動的メモリ確保
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/25 02:37 UTC 版)
「動的メモリ確保」の記事における「ページングと動的メモリ確保」の解説
ページング方式では、ページという単位に分割された空いているメモリを「論理アドレス空間」に配置し、それらのメモリだけが存在しているコンピュータであるかのようにプログラムに使わせることができる。物理アドレス(実際のメモリアドレス)では不連続な空き領域しかない場合でも、論理アドレスでは連続した領域であるようにマッピングすることができるため、未使用ページを単純に集め、空いているところから利用するだけで領域の割り当てを行なうことができる。 この領域確保は極めて効率がよいが、メモリの参照速度を保つためにはハードウェア(メモリ管理ユニット、MMU)による対応が必須である。また、粒度の細かいページングは、ページングテーブル(物理アドレスと論理アドレスの対応表)が大きくなるため、4KB程度の大きなブロック単位でしか割り当てることができない。そこで、ページサイズ以上のメモリアロケーションはカーネルの仮想記憶機構に任せ、それより小さい領域の確保には動的メモリ確保のアルゴリズムを用いるのが一般的である。また、カーネルの内部では、デバイスドライバと機器の間でDirect Memory Accessによって通信するときのDMA領域の割り当てを行なう場合など、物理アドレスが連続している領域が必要な場合があり、このようなときは、サイズの大小にかかわらず、全て動的メモリ確保によってメモリを確保しなければならない。 オブジェクト指向言語やLISPなどのプログラミング言語はオブジェクトが仮想空間上に散在(あるいは遍在)することになり、仮想記憶機構によるページアウトが大きな性能低下を招く。このためガベージコレクションでメモリ利用効率を上げる。ガベージコレクションによるメモリ解放は必ずしも物理ページの解放ではなく、解放したメモリ領域をそのプロセス内で再利用することが前提にある。実際に物理ページを解放するにはコンパクションによって解放すべき領域をまとめなければならない。
※この「ページングと動的メモリ確保」の解説は、「動的メモリ確保」の解説の一部です。
「ページングと動的メモリ確保」を含む「動的メモリ確保」の記事については、「動的メモリ確保」の概要を参照ください。
- ページングと動的メモリ確保のページへのリンク