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

Pager


Pagerはディスク上のデータなどをアドレス空間からアクセスできるようにする。Default Pager,Vnode Pager,Device Pagerの三種類がある。


Default Pager
仮想記憶を実現するために補助記憶装置にページをPageOut/PageInする。
通常のVM Object(ページ)にはこのPagerが使用される。

Vnode Pager
ファイルとアドレス空間のマッピングを行う。mmap()でファイルをアドレス空間にマッピングする場合に使用される。

Device Pager
I/O空間上のメモリなどハードウェア上のメモリなどをマップするのに使う。


[関連ルーチン]
Pagerへのインタフェースはosfmk/vm/memory_object.cにある。

memory_object_data_request()
Memory Object(Pager)にデータの取得を要求する。
vm_fault_page()でPageIn処理をするのに使われる。

Pagerの種類に応じて以下の各Requestルーチンを呼び出す。

dp_memory_object_data_request()
vnode_pager_data_request()
device_pager_data_request()


memory_object_data_return()
ページアウト用カーネルスレッド(vm_pageout_iothread_continue())から呼び出される。

Pagerの種類に応じて以下の各Requestルーチンを呼び出す。

dp_memory_object_data_return()
vnode_pager_data_return()
device_pager_data_return()



最終更新 2006/06/13 19:27:01 - kztomita
(2006/06/13 15:09:54 作成)


最近更新したページ