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>.