将malloc的虚拟地址转换为用户空间中的物理地址

时间:2014-07-18 09:18:11

标签: c

我有IPCORE需要物理地址与RAM通信。 我知道当我在用户空间中执行MALLOC时,它会分配内存部分。 现在我需要知道的是这个分配的内存的地址。这样我就可以将它分配给IPCORE并让它对它进行操作。

我希望在用户空间中有一些方法可以做到这一点。 我对内核空间的驱动程序不太满意。

由于

1 个答案:

答案 0 :(得分:0)

用户空间程序就像在计算机上运行的单个程序一样工作。该程序自我占据所有整个地址空间,而不区分虚拟和物理内存。虚拟内存完全由内核管理,对程序透明。如果您没有用于与内核交互的特殊API,则无法知道您是在虚拟化环境中运行还是在裸机上运行。

所以答案取决于你正在使用的操作系统。

此外,通常在没有特殊机制的情况下,无法通过共享内存在内核和用户空间之间进行通信。这可能是危险的,因为VM页面可能在应用程序运行时被移动到物理内存中的另一个位置,或者甚至可能被移出物理内存到磁盘(交换或页面文件)。因此,您可能需要为您的任务搜索更合适的方式,或者至少锁定共享的内存页面。