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 非常容易使用并且有详细的文档,所以如果你的目标是在内核模式和用户模式之间共享内存,它就可以了。
我只是 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 非常容易使用并且有详细的文档,所以如果你的目标是在内核模式和用户模式之间共享内存,它就可以了。