kernel:about "Memory"

物理メモリ管理

  • kernelは起動時に自身が実行される環境が持つ物理メモリ量を確認し、kernel用のメモリ空間とkernel以外用のメモリ空間を管理するための管理テーブルを作成する
  • 物理メモリの管理テーブルに続いて、仮想アドレスへの変換に利用するページテーブルを作成する
    • メモリを利用するProcessはページテーブルを参照するため、直接物理メモリを認識することはない
  • ページテーブルによりアドレス変換の起点を設定することによって仮想メモリとの変換がされる
  • アドレス変換の起点を入れ替えることによりProcessに紐づいたメモリ空間の切り替えを処理する

仮想メモリ管理

  • ユーザプロセスやkernelが使用する仮想メモリ空間についてもkernelがアドレス管理を行う
  • ユーザプロセスは0番地〜3G番地まで、kernelは3G番地〜4G番地を使用する
  • ユーザプロセス用の仮想メモリ空間には、実行されることによってメモリ上に展開されたプログラム自身や、共用ライブラリ、ヒープ領域、スタック領域、データなどが配置される
    • ヒープ領域:プログラムにより動的に確保される領域
    • スタック領域:レジスタなどの退避領域、変数

スワップ領域

  • 搭載されている物理メモリ量以上のメモリ空間をシステムが必要とした場合、kernelは参照のみに使用されているメモリ空間を解放する
  • 解放されたメモリ空間はHDD上の領域に退避される(Swap Out)
  • 解放されたメモリ空間へのアクセスが必要となった場合には再度メモリ上に展開される(Swap In)