Linux
從虛擬地址檢索虛擬頁面 id
我們從 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(); }