2014-07-08 31 views
1

有沒有辦法在Linux內核中獲取進程擁有的所有頁面的列表? 我需要在這些頁面上調用'page_free()'。請告訴我!!如何獲取屬於某個進程的所有頁面的列表(linux)

+0

你是要求一個Linux內核命令,還是更多與Android/C有關的東西?我知道Linux有一個顯示進程的'ps'命令,如果你在它後面加了一個'x'('ps x'),它會顯示一個更廣泛的列表。下面是一些文檔:http://unixhelp.ed.ac.uk/CGI/man-cgi?ps – Zhouster

+0

我在問是否有一個「linux內核API」,它提供了與進程相關的頁面列表,或者如果有是通過擁有進程ID來獲取此列表的一種方式。 – user3788234

+0

您可以嘗試'ps pid',其中pid是您的進程ID。這會給你鏈接到給定進程ID的所有頁面。 – Zhouster

回答

2

如果你想得到所有物理頁面的列表來收集狀態,你可以編寫一個小的內核模塊來實現這一點,聲明一個struct page * p(對於系統上的物理頁面),有一個導出符號./mm/memory.c:mem_map指向PFN = 0的頁面。您可以使用get_num_physpage()獲取物理頁面的總數。那麼你應該可以走到數組來獲得物理頁面統計信息。

如果一個進程的所有頁:它看起來像你必須walk the page tables of a process

希望這有助於!

相關問題