Pager
Rev.10を表示中。最新版はこちら。
Pagerはディスク上のデータなどをアドレス空間からアクセスできるようにする。Default Pager,Vnode Pager,Device Pagerの三種類がある。Default Pager
仮想記憶を実現するために補助記憶装置にページをPageOut/PageInする。
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()
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()
dp_memory_object_data_return()
vnode_pager_data_return()
device_pager_data_return()