pmap
Rev.3を表示中。最新版はこちら。
pmapでは仮想→物理アドレスのマッピングを管理する。変換テーブルの実体はPageDirectoryになる(PageDirectoryの構造はCPUのマニュアル参照)。pmap内のdirbase,pdirbaseがPageDirecotryを指す。pdirbaseは物理アドレスを保持する。図1 pmapの構造 (i386の場合)
カーネルのアドレスマップ
kernel_pmap-----+
struct pmap |
+-----------+<--+
| dirbase |
| pdirbase |---> PageDirectry (この物理アドレスをcr3へ設定)
| |
+-----------+
pv_entry_t pv_head_table
struct pv_entry |
+-------+<-----------+
| next |
| pmap | kernel_pmap
| va | VM_MIN_KERNEL_ADDRESS
+-------+
| |
| | kernel_pmap
| | VM_MIN_KERNEL_ADDRESS+PAGE_SIZE
+-------+
:
+-------+ avail_start(カーネルのページテーブル後の入手可能なページ)
| |
| |
| |
+-------+
:
+-------+ avail_end(最後のページ)
| | <-- ページ数分存在
| |
| |
+-------+
[関連関数]
pmap_init()
i386_vm_init()