从虚拟地址检索虚拟页面 id

从虚拟地址检索虚拟页面 id

我们从 Linux 内核中知道以下函数,它接收指向 struct page 的指针并输出页框的虚拟地址:

void * page_address(struct page *page)

所以我想知道保留版本中是否有一个功能:获取虚拟内存地址并输出相应的虚拟页面id? (输出不应该是struct page内存中的数据结构,因为假设页面可以交换到磁盘。)

谢谢。如果我错了或者有重复的问题,请纠正我。

答案1

在阅读了几篇虚拟地址转换帖子后,我发现虚拟页码是翻译中的中间结果,并在这些帖子中提到。

这是一个例子:https://stackoverflow.com/a/45128487/10971650

这里相关的是变量vpn这里相关的是虚拟页码的。 (我使用函数获取页面大小反而。)

#include <unistd.h>
#include <stdint.h>

uintptr_t get_virtual_page_number (uintptr_t vaddr) {
  return vaddr / getpagesize();
}

相关内容