有沒有找到相應的結構task_struct由給定的結構頁面的方法? 我想要做的是我想知道哪個KVM虛擬機在虛擬化環境中使用給定的頁面。並且task_struct添加了一個新的數據成員(即vm_id),這樣我就可以通過給定的struc頁面獲取task_struct後獲得虛擬機ID。 似乎沒有直接的解決方案。但我不知道這件事。是否可以從struct頁面找到相應的task_struct?
那麼,做這些事情的正確方法是什麼? 非常感謝!
有沒有找到相應的結構task_struct由給定的結構頁面的方法? 我想要做的是我想知道哪個KVM虛擬機在虛擬化環境中使用給定的頁面。並且task_struct添加了一個新的數據成員(即vm_id),這樣我就可以通過給定的struc頁面獲取task_struct後獲得虛擬機ID。 似乎沒有直接的解決方案。但我不知道這件事。是否可以從struct頁面找到相應的task_struct?
那麼,做這些事情的正確方法是什麼? 非常感謝!
一般來說,不會,因爲許多頁面在多個任務/進程(共享庫,運行程序的多個實例等)之間共享。但我並不熟悉內核結構來提出替代解決方案,所以我會讓其他人回答這個問題......
考慮到Linux內核中實現了頁面框架回收算法。爲了實現PFRA,內核使用數據結構來查找所有正在使用相同頁面的Page Table條目,這些條目將被回收。當找到頁表時,如果定義了CONFIG_MM_OWNER,則也應該找到task_struct。
映射到mm_struct的頁面可能是1:N,頁面映射到task_struct也可能是1:N。
在文件./mm/rmap.c中,函數try_to_unmap_anon()和try_to_unmap_file(),有一些代碼可以執行從page struct到mm_struct的反向映射工作。
有關PFRA實現細節,可以參閱第17章,瞭解Linux內核,第3版。
在Linux上的KVM虛擬機是一個師範學校進程與PID一個多VM結構正常工作,存檔你想要什麼,我認爲你需要編寫一個內核模塊,做這樣的事情Walking page tables of a process in Linux