Я на 100% согласен с "почему бы тебе?" комментарии.
Но если вы этого хотите, модуль ядра может сделать это.
Имея виртуальный адрес в текущем адресном пространстве (если вы выполняете системный вызов из процесса, текущего процесса), вы можете перевести его на физический адрес.
Используя последовательно макросы pgd_offset_k
, pud_offset
, pmd_offset
, pte_offset
, вы сможете получить физический адрес.
@ Ответ Даниэля поможет вам узнать, какие адреса вы хотите.
Вы также можете попробовать использовать mem_map[i].address_space
. Он должен содержать некоторую информацию о владельце для каждой физической страницы. Я действительно не знаю, как это понять.
Обратите внимание, что между процессами может быть перекрытие. Такие библиотеки, как libc, которые загружаются несколькими процессами, могут иметь одну копию в физической памяти.