2

有没有一种方法可以通过给定的 struct page 找到相应的 struct task_struct?我想做的是我想知道哪个 KVM 虚拟机在虚拟化环境中使用给定的页面。并且 task_struct 添加了一个新的数据成员(即 vm_id),这样一旦我通过给定的 struc 页面获取 task_struct,我就可以获得 vm id。似乎没有直接的解决方案。但我对此一无所知。

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

4

3 回答 3

1

在 linux 中,kvm vm 是一个普通进程,其中 pid 和许多 vm 结构作为普通任务,要归档你想要的,我认为你需要编写一个内核模块并执行类似这样的操作

于 2013-07-19T07:56:15.853 回答
1

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

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

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

PFRA 实现细节可以参考《Understanding Linux Kernel, 3rd Edition》中的第 17 章。

于 2013-03-11T05:59:36.447 回答
0

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

于 2012-11-08T14:54:52.600 回答