1 物理地址,MMU相关概念
Intel X86存在IO空间,相对于内存空间,通过IN OUT指令访问。大多数ARM PowerPC仅有内存空间。内存空间通过地址,指针访问。程序,程序运行中使用的变量都在内存空间。
物理地址
unsigned char *p = (unsigned char*) 0xF000FF00;
*p = 1;
0xF000FF00这个地址对于x86是16bit段地址+16bit偏移地址,即,0xF000 * 16 + 0xFF00 = 0xF0000 + 0xFF00 = 0xFFF00
地址对于ARM等为采用段地址的处理器,就是空间0xF000FF00。
x86处理器用实际地址做第一步跳转(软重启):
typedef void (*lpFunction) ();//define a function pointer type
lpFunction lpReset = (lpFunction)0xF000FFF0; //get a pointer that point to the addr
lpRest(); //go to the function at addr
MMU
memory management unit,辅助内存管理,提供虚拟和物理地址映射、内存访问权限保护、Cache缓存控制。
Kernel借助MMU让用户感觉可以使用很大的内存空间,而让开发者在写程序的时候可以不考虑物理实际容量。
TLB:Translation Lookaside Buffer,转换旁路缓存。是MMU的核心部件,缓存少量的虚拟–物理关系,是转换表的Cache,也称为“快表”。
TTW:Translation Table walk,转换表漫游。当TLB没有需要的转换对,通过内