这是一个创建于 1757 天前的主题,其中的信息可能已经有所发展或是发生改变。
查阅了很多资料,源码也看了一些(实在太多了,时间不够)。所以想问一下 p2m 是负责 gfn->mfn,哈希表是 hash(mfn, type) -> smfn,所以
1. 看资料都说 gfn 与 mfn 的映射是一对一的,而 mfn 与 smfn 之间的映射可能是一对多,mfn 与 smfn 之间的映射由哈希表负责,为什么是一对多呢?那么 gfn 与 mfn 的映射这时由谁负责呢?我看源码直接是 shadow_hash_insert(d, mfn_x(gmfn), shadowtype, smfn);,即 gmfn 直接通过 mfn_x(gmfn)转换成了 mfn,这是个啥操作???
2. type 是指的该 mfn 在 guest 页表的级数(另,影子页表和 guest 页表结构需要一致吗?)?
3. 哈希表中这个 mfn 是指的非最低级页表中页表项里的 mfn 吗?
4.p2m 表负责的是最低级页表所指的 gfn 到 mfn 的转换吗?那就是说 mfn 是不包含 smfn 的吗?