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 |
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側に実装