UPL(Universal Page List)在厦门大学有什么作用?

What’s the role of UPL (Universal Page List) in XNU?

我只是 XNU 的初学者,正在研究那个源代码。

看到虚拟机时。我有三个问题。

 • What is role of UPL? Is it the same to anon_vma and PST node in Linux for reverse mapping? 
 • If first answer is True, How XNU can find virtual address using upl structure?
 • If first answer is False, How XNU edit pmap entries for page in/out?

我试图找到 Apple 开发文档,但找不到答案。

谢谢。

我也有兴趣探索 xnu 的 VM 领域,所以我对你的问题做了一些初步研究。

因此,UPL 是任何一组形成内存范围并共享相同属性的页面的包装器。

UPL 结构本身提供其页面各种属性的快照,例如页面是否已映射、脏、加密、繁忙(访问受阻)或对应于 I/O 内存。

UPL API 包含以下方法...其中没有一种适合您的物理到虚拟映射的需要,反之亦然upl_abort upl_abort_range upl_commit upl_commit_range

然而,据我所知,UPL 是 BSD 等同于来自 IOKit 框架的 IOMemoryDescriptor。这个 IOKit class 非常容易使用并且有详细的文档,所以如果你的目标是在内核模式和用户模式之间共享内存,它就可以了。