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

物理ページ管理


Rev.19を表示中。最新版はこちら

作成中

vm_page_t
物理ページ管理用の構造体


表1 vm_page_tのフィールド(一部)
項目
内容
inactive
Inactiveページである。
active
Activeページである。
pageout_queue
PageOutQueueにつながれている。
vm_pageout_queue_internal,externel
free
Freeページ。Freeキューにつながれている。
reference
PageTableEntryのAccessed bit相当。
pageout
Pageoutするためにwired,busy状態である。
wanted
このページを待っているスレッドが存在する。
tabled
vm_objectのmemqにつながれている時、TRUE
fictitious
物理ページが存在しない
absent
データが要求されたがページが存在しない場合TRUE。
vm_object_upl_request()でPageinのUPLを作る際、VM Objectにページがなかった場合、セットされている。
dirty
PageTableEntryのDirty bit相当。

物理ページはwired,active,inactive,freeに分類される

wired
Pageoutできないページ。
Wiredページはどのキューにも積まれていない。

active

inactive

free
未使用ページ


[ページ管理用キュー]
vm_page_queue_free
未使用のページがつながれる。

vm_page_queue_active
activeページがつながれる。
activeページは mem->active == TRUE。

vm_page_queue_inactive
inactiveページがつながれる。
inactiveページは(mem->inactive == TRUE && mem->zero_fill == FALSE)

vm_page_queue_zf
inactiveページのうちZero Fillページをつなぐ。
Zero Fillページは(mem->inactive == TRUE && mem->zero_fill == TRUE)


[関連関数]
vm_page_grab()
空きページをFreeList(vm_page_queue_free)から取得する。



最終更新 2006/06/16 17:36:58 - kztomita
(2006/06/01 00:47:09 作成)


最近更新したページ