Index ソフト・ハード Linuxタスク | メモリ管理 |
アドレス変換 カーネル空間のレイアウト 実ページの管理 動的メモリ割当て プロセスの仮想記憶の実現 ページの回収処理 |
アドレス変換 ・プロセスは、仮想アドレス空間の上で動作 プロセス空間(仮想記憶)・仮想アドレス空間の実現は、HWのアドレス変換機構で実現 ・仮想アドレス空間の大きさは、32ビットCPU、0~4GB-1 ・物理メモリ(実メモリ)は一定の大きさで区切られる。 一区切り = 実ページ(ページフレーム) 一区切りは、仮想記憶機構を利用した場合、CPUがサポートするメモリ管理の最小単位 仮想アドレス空間も同じ大きさに区切って管理 一区切り = 仮想ページ ページの大きさはCPUのアーキテクチャによって異なる。・仮想アドレスから実アドレスの変換 ページ変換テーブル(TBL:Transfer Look aside Buffer)を使用してHWが自動的に行う。 TBLへのエントリーの追加はHWが行う。 TBLのエントリーの削除は、カーネルが指示する。 TBLはプロセス毎に存在カーネル空間のレイアウト ・IA-32 プロセッサ(Pentium 4) ストレートマップ領域 カーネル仮想領域 HIGHMEMアクセス領域 固定マップ領域実ページの管理 ・空きページの管理 ・ページ獲得処理 ・Buddyシステム管理方式 隣り合った空き領域同士を結合し、より大きな空き領域を作り出そうとする。動的メモリ割当て ・Slabアロケータメモリ管理方式 ページより小さいメモリ領域を効率よく管理・2.6の、mempool追加 空きメモリが少ない状態でも最低限のメモリを確保するため、事前に一定量を予約プロセスの仮想記憶の実現 ・物理的に分散したページを集めて、連続した仮想空間を割り付ける。 ・実メモリの断片化への考慮が不要 ・プロセスには透過的で、動作していることを意識する必要はない。 ・多重仮想空間 各プロセスへ独立したアドレス空間を割り当て テキスト、データ、ヒープ、DLL・スワップ機構 参照頻度の低い領域へ割付けられた実メモリをシステムへ返却 他の利用頻度の高い領域用に再割当する。・デマンドページング 参照が発生した領域に対して、ページ単位で実メモリを割当てる。・コピーオンライト fork()時のプロセス空間の複製処理を高速化するため、 実際の書込み発生まで、親子のプロセス間でページを共有・ファイルマップ ページの回収処理 |
All Rights Reserved. Copyright (C) ITCL |