linux内核中内核地址空间的布局是什么?

时间:2014-09-19 05:56:26

标签: linux linux-kernel

用户空间在进程地址空间中的布局是众所周知的,它们占用1G~4G的虚拟内存(32位操作系统)并由数据(bss),堆栈,堆区域组成。但是,我找不到内核空间的布局。

我想知道这些:

当vfs(虚拟文件系统)代码通过kmalloc获取内存时,内存驻留在哪里?在内核空间的某个地方(~1G)?以及如何找到它们?

感谢

1 个答案:

答案 0 :(得分:0)

通常,3G(0xC0000000)以上的地址由内核空间保留。您可以在内核配置过程中更改此项。

检查一下,核心导出的所有符号都放在地址大于0xC0000000的位置。只需运行'sudo cat / proc / kallsyms | head -n 10'你会看到它们。

现在提出你的问题。我想你实际上可以通过打印给定的地址(例如kmalloc返回)自己找到答案。甚至可以使用内核中的宏将物理地址转换为虚拟地址,反之亦然。