如何在Windows系统信息Msinfo32中解释I / O和内存?I / O地址是否表示映射I / O设备寄存器的内存位置以及内存中的地址如何?如果有物理内存地址,那么它们每次都应该不同吗?
如何在Windows系统信息Msinfo32中解释I / O和内存?I / O地址是否表示映射I / O设备寄存器的内存位置以及内存中的地址如何?如果有物理内存地址,那么它们每次都应该不同吗?
Answers:
您在“I / O”下看到的是“地址”,但它们既不是虚拟地址也不是物理内存地址。它们位于I / O端口空间中。它们仅对IN和OUT等特殊指令有意义。
“memory”页面显示物理地址空间内的地址。这与RAM所在的地址空间相同。这些是由各种I / O设备和主板上的某些其他设备定义的“寄存器”和缓冲区空间的地址。驱动程序通过引用操作系统与这些物理地址关联的虚拟地址来与这些设备通信。
符合总线地址寄存器PCI标准的设备的端口和存储器地址均可由OS配置。但是,所有这些配置都是在引导时完成的,并且大多数设备最终都会从一个引导到下一个引导完成相同的地址。由于遗留原因,一些设备被分配给众所周知的地址。其他一些设备(例如传统的串行和并行端口,如果有的话)都在LPC总线上。以编程方式,这看起来像ISA,但电气是一个串行总线,像ISA不能软件配置; 这些设备硬连线到他们的地址。
顺便说一下,I / O端口空间是古代建筑的遗迹,或者至少是具有古老根源的建筑(如x86)。大多数现代架构都没有实现任何这样的东西; 一切都在物理内存空间。