将malloc的虚拟地址转换为用户空间中的物理地址
我有一个IPCORE,它需要物理地址来与RAM通信。 我知道,当我在用户空间中执行MALLOC时,它会分配部分内存。 现在我只需要知道这个分配内存的地址。这样我就可以把它分配给IPCORE,让它对它执行操作 我希望在用户空间中有一些方法可以做到这一点。 我不擅长内核空间的驱动程序将malloc的虚拟地址转换为用户空间中的物理地址,c,C,我有一个IPCORE,它需要物理地址来与RAM通信。 我知道,当我在用户空间中执行MALLOC时,它会分配部分内存。 现在我只需要知道这个分配内存的地址。这样我就可以把它分配给IPCORE,让它对它执行操作 我希望在用户空间中有一些方法可以做到这一点。 我不擅长内核空间的驱动程序 谢谢一个用户空间程序的工作原理就像是一个在机器上运行的单一程序。程序自私地占据了整个地址空间,而不区分虚拟内存和物理内存。虚拟内存完全由内核管理,对程序透明。如果没有与内核交互的特殊API,则永远无法知道是在虚拟化环境
谢谢一个用户空间程序的工作原理就像是一个在机器上运行的单一程序。程序自私地占据了整个地址空间,而不区分虚拟内存和物理内存。虚拟内存完全由内核管理,对程序透明。如果没有与内核交互的特殊API,则永远无法知道是在虚拟化环境中运行还是在裸机上运行 因此,答案取决于您使用的操作系统
- 在Linux中,您可以通过
文件系统接口与内核交互。进程的所有映射都位于proc
此处描述了/proc/$PID/pagemap
的二进制格式: 下面是一篇文章,其中有一个具体的例子,说明如何解析它:pagemap
- 至于窗户 根据这一答案: 您必须编写一个自定义驱动程序
- 其他操作系统-尝试在操作系统的文档中找到它