Linux

從虛擬地址檢索虛擬頁面 id

  • February 21, 2022

我們從 Linux 核心中知道以下函式,它接受一個指向 struct page 的指針並輸出頁框的虛擬地址:

void * page_address(struct page *page)

所以我想知道保留版本中的功能是否可用:獲取虛擬記憶體地址並輸出相應的虛擬頁面ID?(輸出不應該是struct page記憶體中的資料結構,因為假設頁面可以交換到磁碟。)

謝謝。糾正我,如果我錯了或對 SO 有重複的問題。

在閱讀了幾篇虛擬地址翻譯文章後,我發現虛擬頁碼是翻譯的中間結果,並且在那些文章中有所提及。

這是一個範例:https ://stackoverflow.com/a/45128487/10971650 。

這里相關的是vpn虛擬頁碼的變數。(我使用函式getpagesize代替。)

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

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

引用自:https://unix.stackexchange.com/questions/689406