物理地址,物理内存,与io内存的区别


物理地址(RAM):cpu发出的地址

物理内存(DRAM):只占物理地址一部分,由/proc/iomem可见,“System RAM” 就是物理内存(DRAM)的空间:

>/proc/iomem
00000000-00000fff : reserved
00001000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000c8bff : Video ROM
000e0000-000fffff : reserved
  000f0000-000fffff : System ROM
00100000-202fffff : System RAM
  01000000-01534484 : Kernel code
  01534485-01c0cc8f : Kernel data
  01d59000-02020aa3 : Kernel bss
20300000-23ffffff : RAM buffer



io内存: 对外部设备寄存器(有的外部设备还有其内存)的编址方式,物理地址(RAM)的一部分划出来用作IO地址空间。由上图可见,除了DRAM,其他空间有的被外设的寄存器占用。
虚拟地址:现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要MMU(Memory Management Unit)的支持。MMU通常是CPU的一部分,如果处理器没有MMU,或者有MMU但没有启用,CPU执行单元发出的内存地址将直接传到芯片引脚上,被内存芯片(物理内存)接收,这称为物理地址(Physical Address),如果处理器启用了MMU,CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将虚拟地址映射成物理地址

你可能感兴趣的:(arm)