kmalloc返回的地址的物理地址

时间:2013-06-22 12:52:36

标签: linux linux-kernel memory-address virtual-memory kmalloc

我对kmalloc回复给我的地址感到有点困惑。根据{{​​3}},我得到的地址位于ffff880000000000 - ffffc7ffffffffff范围内,因此“直接映射所有内存”。这个映射如何工作?我很确定kmalloc不会简单地返回一个物理地址。

1 个答案:

答案 0 :(得分:3)

你是对的,kmalloc正在返回虚拟地址,而不是物理地址。您链接的内存映射描述了虚拟内存映射,而不是物理内存映射。

当您访问该地址的数据时,MMU通常会将虚拟地址转换为物理地址。虚拟地址转换的内容取决于内核指定的内存映射。

您链接的内存映射显示了Linux如何进行映射。它说,如果你有0xffff8800000000000xffffc7ffffffffff之间的虚拟地址,它会被映射到物理内存中的某个地方(除非我们正在做DMA,否则我们不知道我们到底在哪里也不关心)