1.总线地址
地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。
简单来说就是:cpu能访问内存的范围。
现象:装了32位的win7系统,明明内存条8G,可是系统只识别了3.8G ,装了64位,才能识别到8G
32位表示最大能访问 = 4,294,967,296 bit的空间
bit 4,294,967,296
kbit 4,194,304
mbit 4096
gbit 4
树莓派也是32位系统,差不多1G内存
2.物理地址
硬件的 实际地址 或 绝对地址
3.虚拟地址
逻辑(基于算法的地址(软件层面的地址,是一个假地址))地址称为虚拟地址
例如linux用的就是虚拟地址
cat /proc/cpuinfo 查看树莓派cpu型号是:BCM2835
由上图,对CPU来说最大能访问FFFF FFFF也就是 4,294,967,296 bit 4G内存
而对ARM物理地址来说最大只有4000000 也就是大概ARM的1G内存
对虚拟地址来说,也就是总线真正能看到的内存,也是4G
而当程序运行起来超过1G时,真正的物理地址是不够用的,此时有个mmu的单元把虚拟地址映射成物理地址。
我们写的所有的代码,都是操控的虚拟地址,都是假的地址。
内核的页表映射:
页表是通过mmu来管理和来设计的,设计完页表后通过mmu来执行,把虚拟地址通过页表映射成物理地址,页表决定了这个1m在哪里被表示的4M,可以在0~4M来表示,也可以在10~14m来表示。