2014-09-19 101 views
0

用戶空間的進程地址空間佈局是衆所周知的,他們需要1G〜4G的虛擬內存(32位操作系統),並且由數據(bss),堆棧,堆區組成。但是,我找不到內核空間的佈局。linux內核的內核地址空間的佈局是什麼?

我不知道像論文:

當VFS(虛擬文件系統)的代碼獲得通過kmalloc的內存,哪裏內存駐留在?在內核空間的某處(〜1G)?以及以後如何找到它們?

謝謝

+0

我想你可以從任何搜索引擎問這個問題,並得到大量合理可靠的回覆,比如[this](http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-記憶/)。 – 2014-09-19 10:14:44

+0

Linux在啓動過程中顯示內存佈局。嘗試'dmesg'。它可以因版本而異。還有像*/proc/vmalloc *等proc文件,告訴你有一些條目。原因是,你的問題太廣泛或有誤解。 'kmalloc()'對於VFS來說就像幾乎所有的'kmalloc()'一樣。 * .config *選項,內核版本等將改變答案。 – 2014-09-19 16:30:29

回答

0

通常,3G(0xC0000000)以上的地址由內核空間保留。你可以在內核配置過程中改變它。

選中此項,內核導出的所有符號位於大於0xC0000000的地址。只需運行'sudo cat/proc/kallsyms |頭-10「你會看到他們。

現在爲您的問題。我想你實際上可以通過打印給定的地址(例如返回的kmalloc)來找到答案。甚至可以使用來自內核的宏將物理地址轉換爲虛擬地址,反之亦然。

相關問題