设备地址是虚拟地址吗?在这种情况下,mmap的功能是什么?

时间:2014-07-23 14:32:37

标签: linux-kernel kernel kernel-module kernel32

设备地址是虚拟地址吗?在这种情况下,mmap的功能是什么?或映射到物理地址的设备地址

2 个答案:

答案 0 :(得分:0)

通常,设备地址由特定的系统/主机总线分配。它可以识别总线上的设备。 虚拟地址和物理地址用于存储器系统。

对于mmap,系统为物理地址空间中的特定设备分配I / O地址,应用程序可以通过内存访问的方式访问设备。

答案 1 :(得分:0)

通常,设备带有可以从CPU访问的寄存器,内部存储器等资源。

为了能够访问特定的设备寄存器,例如从 CPU ,您需要知道该设备寄存器的物理地址,然后将该物理地址映射到内核或用户,具体取决于你的用例。

mmap映射要从用户空间访问的资源。 mmap的结果是映射到此资源的用户空间cpu地址。

这个资源可以是任何东西。它可以是:

  • 文件
  • 匿名记忆
  • 一些外部设备资源(内存,寄存器等)
例如,mmap不能直接映射设备寄存器,因为它不知道如何做到这一点。在这种情况下,您可能需要为mmap操作添加一些内核空间支持。