一番前へ
最初へ戻る
(40)

ブート時のメモリ管理


  • 起動ステップ 1 (real mode)
    • 4MB のアドレススペース用のページテーブルをコンパイル時に初期化(pg0, arch/kernel/head.S で実施)
      • 固定値(static な配列)
      • 範囲[PAGE_OFFSET, PAGE_PFFSET+0x3fffff]
    • ※ページングは使えない状態
    • ※起動ステップ 2 に移行後は使用しない

  • 起動ステップ 2 (protect mode)
    • paging_init() ルーチンで初期化(swapper_pg_dir[], arch/mm/init.c)
      • ページテーブルに PAGE_OFFSET 以降の仮想アドレスに対応する物理アドレスを書き込む
      • 0x0 をアンマップする(NULL Pointer access用の領域となる)
    • ※Pentium 以降では 4MB ページテーブルも利用可能
戻る
戻る