我们从 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();
}