kmalloc返回的地址的物理地址

我对kmalloc返回给我的地址有点困惑。 根据虚拟内存映射 ,我得到的地址是在ffff880000000000 – ffffc7ffffffffff范围内,所以“直接映射所有物理内存”。 这个映射如何工作? 我很确定,kmalloc不会简单地返回一个物理地址。

在Linux中查找共享库的加载地址

内核sys_call_table地址与system.map中指定的地址不匹配

不是07C0:0000,x86机器上的物理地址与0000:7C00相同吗?

从内存中获取地址以在源代码中运行

为什么Linux上的string文字的内存地址与其他string的内存地址不同?

你是对的, kmalloc返回一个虚拟地址,而不是物理地址。 链接到的内存映射是描述虚拟内存映射,而不是物理内存映射。

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

您链接到的内存映射显示了Linux如何执行映射。 这是说,如果你有一个0xffff880000000000和0xffffc7ffffffffff之间的虚拟地址,它映射到物理内存的某个地方(我们不知道在哪里,除非我们正在做DMA,否则我们不关心)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐