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

Default Pager


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

作成中

補助記憶装置へのPageOut/PageInを行う。



表1 vstructの内容(一部)
フィールド
内容
vs_mem_obj
vs_control

vs_readers処理中のReadRequest数
vs_writers
処理中のWriteRequest数
vs_indirect
クラスタマップがIndirectマップ。(vsu_imapが有効)
vsu_dmap

vsu_imap

Default Pagerにおけるmemory_objectの実体。
mem_obj->pagerがmagic numberだとvsであることを示す。

Paging Segment

仮想記憶を行う上でページアウトするデバイス、パーティション毎にPaging Segmentが作成されて管理される。Paging Segmentはpaging_segments[]からまとめて管理される(図1)。

各Paging Segmentは各Segmentの空き容量を管理する。ps_pgnumが総ページ数でps_clcountが実際の空き容量となる(クラスタ数。ps_clshiftだけ右シフトするとページ数になる)。

Paging Segmentはdefault_pager_add_file(), default_pager_add_segment()によって作成される。default_pager_add_file()はスワップファイルをPagerに登録するルーチンでmacx_swapon()から呼ばれる。default_pager_add_segment()はスワップパーティションをPagerに登録するルーチン。



図1 Paging Segment


[関連関数]
dp_memory_object_data_request()
PageIn処理を行う。

dp_memory_object_data_return()
PageOut処理を行う。

default_pager_memory_object_create()
vstructを構築する。

pvs_cluster_read(vs, vs_offset, cnt)
ps_read_file()
vnode_pagein() - BSD側に実装



最終更新 2006/06/14 16:18:42 - kztomita
(2006/06/13 15:40:10 作成)
添付ファイル
paging_segment.png - kztomita
vstruct.png - kztomita
vsmap.png - kztomita


最近更新したページ