Linux kernel 分配的PCI内存驻留在哪里?

Linux kernel 分配的PCI内存驻留在哪里?,linux-kernel,drivers,pci,Linux Kernel,Drivers,Pci,可能是一个超级基本的问题,但我读到这篇文章时,我很好奇,当我写PCI内存空间地址时,我到底在写什么 我是否正在写入PCI设备上的内存模块?我的系统内存的一个特殊部分?连接到主板的专门用于PCI总线的内存?它是否完全依赖于体系结构,故意含糊其辞?因此,出现了一种被称为“内存控制器”的东西,它位于CPU和RAM之间。无论何时寻址内存中的任何内容,它都会通过内存控制器 当系统启动时,通常与PCI根集线器集成的内存控制器(google for‘Intel GMCH’以获取有关Intel版本的更多信息)会

可能是一个超级基本的问题,但我读到这篇文章时,我很好奇,当我写PCI内存空间地址时,我到底在写什么


我是否正在写入PCI设备上的内存模块?我的系统内存的一个特殊部分?连接到主板的专门用于PCI总线的内存?它是否完全依赖于体系结构,故意含糊其辞?

因此,出现了一种被称为“内存控制器”的东西,它位于CPU和RAM之间。无论何时寻址内存中的任何内容,它都会通过内存控制器

当系统启动时,通常与PCI根集线器集成的内存控制器(google for‘Intel GMCH’以获取有关Intel版本的更多信息)会扫描PCI总线以查找所有设备及其功能。然后为所有PCI内存空间留出“虚拟”地址


当您写入这些虚拟地址时,内存控制器知道将该地址范围内的任何内容转发到PCI设备,而不是主内存(或其他设备)。

Super basic?可能地离题?当然这真的应该是道歉,谢谢你指导我超级用户@这是一个超级用户的问题吗?用户不写入内存地址。内存控制器只处理物理地址。它是MMU,内存管理单元,可以执行虚拟到物理地址的转换。并非所有系统都有MMU,当有MMU时,它可能并不总是被启用。因此MMU是根复合体,还是MMU转发给RC,而RC又转发给端点?