コラム3
KVM shadow pagingの実装の特徴
KVM用語
- level
page tableのレベル。
page tableの段数の事で、リーフから数えてMMUのルート側に向かって1、2、3、4とつけます。
トップレベル(レベル数がもっとも大きいものを)をrootと呼びます。仮想アドレス空間にマップされるページをレベル0と呼ぶことがあります。
64bitの場合 4 level
32bit PAEの場合 3 level
32bitの場合 2 level
このようにレベルをつけるとpage tableの段数によらず、page table pageはlevel 1でpage directoryはlevel 2となり、コードを共有化する上で好都合となります。これに対応して次の定数が定義されています。
#define PT64_ROOT_LEVEL 4
#define PT32_ROOT_LEVEL 2
#define PT32E_ROOT_LEVEL 3
#define PT_DIRECTORY_LEVEL 2
#define PT_PAGE_TABLE_LEVEL 1
この用語はXenに由来すると思われます。
コード上では次の略語及び対応する型が使われています。
- gpa (gpa_t)
Guest Physical Address - gfn (gfn_t)
Guest Frame Number - gpte
Guest Page Table Entry - gva (gva_t)
Guest Virtual Address - spte
Shadow Page Table Entry