2012-11-08 24 views
2

有没有找到相应的结构task_struct由给定的结构页面的方法? 我想要做的是我想知道哪个KVM虚拟机在虚拟化环境中使用给定的页面。并且task_struct添加了一个新的数据成员(即vm_id),这样我就可以通过给定的struc页面获取task_struct后获得虚拟机ID。 似乎没有直接的解决方案。但我不知道这件事。是否可以从struct页面找到相应的task_struct?

那么,做这些事情的正确方法是什么? 非常感谢!

回答

0

一般来说,不会,因为许多页面在多个任务/进程(共享库,运行程序的多个实例等)之间共享。但我并不熟悉内核结构来提出替代解决方案,所以我会让其他人回答这个问题......

1

考虑到Linux内核中实现了页面框架回收算法。为了实现PFRA,内核使用数据结构来查找所有正在使用相同页面的Page Table条目,这些条目将被回收。当找到页表时,如果定义了CONFIG_MM_OWNER,则也应该找到task_struct。

映射到mm_struct的页面可能是1:N,页面映射到task_struct也可能是1:N。

在文件./mm/rmap.c中,函数try_to_unmap_anon()和try_to_unmap_file(),有一些代码可以执行从page struct到mm_struct的反向映射工作。

有关PFRA实现细节,可以参阅第17章,了解Linux内核,第3版。

相关问题