7.4. 映射页表──vm_map_t, vm_entry_t

FreeBSD将物理页表结构从VM系统中分离了出来。各进程的所有页表可以脱离进程 (on the fly)重建,并且通常被认为是一次性的。特殊的页表,如内核虚拟内存(KVM), 常常是被永久性预分配的;这些页表不是一次性的。

FreeBSD通过vm_map_tvm_entry_t 结构将虚拟内存中vm_objects的各地址范围部分关联起来。 页表被直接的从 vm_map_t/vm_entry_t/vm_object_t 中有层次的合成出来。这里需要重申一下,我曾提到的“物理页仅直接与 vm_object相关联”并不很正确。vm_page_t 也被会被链接到正在与之相关联的页表中。当页表被调用时, 一个vm_page_t结构体可以被链接到几个pmaps。 然而,由于有了层次的关联,因此在对象中所有对同一页的引用会引用同一 vm_page_t结构体,这样就实现了跨区域(board)的缓存的统一。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.