物理地址和虚拟地址

来源:互联网 发布:大一c语言考试重点 编辑:程序博客网 时间:2024/05/22 14:43

       在操作系统上的实现的,用户空间的全部是虚拟地址。即能打印的全部是虚拟地址,只有裸机变成打印的,接触的才是真正的无力地址。

LDR R1,【R2】,这个r2内写的也是虚拟地址,但是这个虚拟地址和真正的物理地址的值一样,原因是关闭了MMU(内存管理单元)。MMU负责虚拟地址到物理地址的映射,并提供硬件机制的内存条件检查。

ALU和MMU都是在CUP内,当MMU关闭的时候,就访问虚拟地址,当MMU开启的时候,就会访问物理地址,MMU不存储映射关系,只是一个查表者。


关于虚拟地址有几个很重要的地址,0x8048000是代码段起始地址,0x804a900(相差4K)是数据段的起始地是,可以通过程序来验证(包括栈地址:用户空间栈和内核栈),通过程序结果可以结合1总结。


验证程序:

 1 #include<stdio.h>
  2 int global = 20;
  3 int main()
  4 {
  5         int local = 100;
  6         printf(".text = %p\n",main);
  7         printf(".data = %p\n",&global);
  8         printf(".stack = %p\n",&local);
  9 return 0;
 10 }


原创粉丝点击