【发布时间】:2013-10-27 20:05:31
【问题描述】:
当 CPU 处于保护模式时,它期望所有地址都是虚拟的。内核驻留在物理内存中,并将物理地址用于其内部目的。在开发驱动程序驱动程序框架例程时,必须访问具有特定物理地址的某些内存位置(关于该设备的内存映射地址)。那么什么机制允许在保护模式下使用物理地址呢?
【问题讨论】:
-
我问的有点不对。我的意思是这个问题的硬件方面,而不考虑某些驱动程序框架的细节。 CPU 不能在保护模式下使用物理地址,所以它会向 DMA 控制器发送命令来进行数据传输吗?如果 DMA 使用物理地址,则它承认它的存在(事实上,当 DMA 管理 RAM 和端口访问时,CPU 可以执行一些计算)。除了 Linux 内核源代码之外,还有关于使用 DMA 的文档吗?