0から作るOS開発 Vol.6 カーネル編 ページング
価格: ¥0
C言語で0から作るOSを開発について説明していきます。このシリーズではカーネルの開発について説明しています。
今回は仮想アドレス空間を制御するページングについてです。ページングはPTE(ページテーブルエントリー)とPDE(ページディレクトリエントリー)を設定して制御します。
【注意】本書はプロセスの仮想アドレス空間管理についての説明まではしていません。OS起動時のページング設定に留めています。プロセスの仮想アドレス管理についてはプロセス管理で説明していきます。
[目次]
前回までの内容
物理メモリー管理の限界
仮想メモリー
仮想アドレス空間
MMU(Memory Management Unit:メモリー管理ユニット)
TLB(Translation Lookaside Buffer:アドレス変換バッファ)
ページ
ページング
ページと物理アドレス
ページテーブルエントリー(PTE:Page Table Entries)
PTEを実装してみる
ページテーブル
ページディレクトリエントリー(PDE:Page Directory Entries)
PDE
PDEの実装
ページと仮想アドレス
仮想アドレスから物理アドレスへの変換
マルチタスクとメモリー空間
仮想メモリー管理
カーネルを0xC0000000で動かす方策その1
カーネルを0xC0000000で動かす方策その2
カーネルを0xC0000000にロードする簡単な例
仮想メモリー管理の実装
ページ領域と物理領域の割り当てと解放
仮想メモリーアドレスからPTE、PDEを取得する
ページディレクトリの読み込み
TLBをフラッシュする
仮想メモリーと物理メモリーの紐付け
仮想メモリー管理初期化
ページングを有効にする
ページフォルト