Mac OS Xのカーネル Xnuのメモ書き

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()

最終更新 2006/05/27 20:36:20 - kztomita
(2006/03/27 13:06:55 作成)
添付ファイル
pmap2.png - kztomita
pmap.png - kztomita
pv_entry.png - kztomita


最近更新したページ