我只是XNU的初学者,正在学习这个源代码。
当看到VM的时候。我有三个问题。
• 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?我试图找到苹果的开发文档,但没有找到答案。
谢谢。
发布于 2018-04-29 08:30:04
我还对探索xnu的VM领域感兴趣,所以我对您的问题做了一些初步的研究。
因此,UPL是任何一组页面的包装器,形成内存范围并共享相同的属性。
UPL结构本身提供了其页面的各种属性的快照,例如页面是映射的、脏的、加密的、繁忙的(访问阻塞的)还是对应于I/O内存的。
UPL由以下方法组成..。它们不适合您需要的物理到虚拟映射或反之亦然的upl_abort upl_abort_range upl_commit upl_commit_range。
然而,我所读到的是,UPL相当于来自IOKit框架的BSD。这个IOKit类非常容易使用,并且有很好的文档记录,所以如果您的目标是在内核和用户模式之间共享内存,那么就可以了。
https://stackoverflow.com/questions/49980293
复制相似问题