Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在Linux内核中找到具有页面的进程?_C_Linux_Linux Kernel - Fatal编程技术网

C 如何在Linux内核中找到具有页面的进程?

C 如何在Linux内核中找到具有页面的进程?,c,linux,linux-kernel,C,Linux,Linux Kernel,我正在做一个关于Linux内核mm(内存管理)的项目 对于一个页面,我需要找到该页面所属的进程 但是,我无法找到任何不修改内核的方法。 所以,我真的想知道是否有可能在不修改内核的情况下做到这一点 具体来说,当我有一个VMA时,也可以将VMA转换成相应的页面,我想知道VMA或页面属于哪个进程 例如,在mm/page_io.c(linux内核源代码树的)中: 在我标记为“这里!”的地方,我应该按照我上面所说的去做。 我在等你的好答案。 谢谢大家! 您的同事可能会提供帮助。您能否提供一些代码,显示您希

我正在做一个关于Linux内核mm(内存管理)的项目 对于一个页面,我需要找到该页面所属的进程

但是,我无法找到任何不修改内核的方法。 所以,我真的想知道是否有可能在不修改内核的情况下做到这一点

具体来说,当我有一个VMA时,也可以将VMA转换成相应的页面,我想知道VMA或页面属于哪个进程

例如,在mm/page_io.c(linux内核源代码树的)中:

在我标记为“这里!”的地方,我应该按照我上面所说的去做。 我在等你的好答案。
谢谢大家!

您的同事可能会提供帮助。您能否提供一些代码,显示您希望在其中实现所请求功能的上下文?一般来说,您的问题是清楚的,但上下文可能会提供额外的可能性;执行grep xxx/proc/$PID/maps;完成?齐瓦列夫//哦,对不起。我添加了一个代码段。jww//谢谢您的建议:-)
    int __swap_writepage(struct page *page, struct writeback_control *wbc,
        void (*end_write_func)(struct bio *, int))
{
        struct bio *bio;
        int ret, rw = WRITE;
        struct swap_info_struct *sis = page_swap_info(page);
...
        ret = bdev_write_page(sis->bdev, swap_page_sector(page), page, wbc);
        if (!ret) {
                count_vm_event(PSWPOUT);

                /* I should figure out what process is having the page above.
                 * But it is hard to know, because page is managed in LRU and
                 * it is not directly related to its process. What hints I have
                 * are page struct and some data structures which I could
                 * infer from the page only.
                 */
                // here!