实模式与保护模式

实模式:CPU刚刚启动的时候是实模式阶段,实模式被特殊定义为20位地址内存可访问空间   因此实模式只能访问地址在1M以下的内存(这个内存把它叫做常规内存,地址在1M以上的叫扩展内存)

工作机理x86下的cpu 地址总线:20根,因为实模式下的寻址是寻的实际物理地址,因此最大的寻址范围就是2^20字节=1M内存,但是对于x86下的内部寄存器都是16位的,能表示的地址范围只有64k,因此在cpu内部,采取的是分段寻址的模式:物理地址=左移4位的段地址+偏移地址。举个例子来说,例如你的段基地址:DS=1000H,偏移地址:EA=FFFFH,那么对应的物理地址就是:10000H+0FFFFH=1FFFFH,即16寄存器访问20根地址线的地址范围(通过计算可知这里面访问的地址区间会超过1M的大小,最大为10FFEFH,所以有个A20 GATE地址线的概念)

保护模式:实模式下,最大访问内存只有1M,即使A20 GATE 打开也只有10FFEFH,对于计算机来说太小了;更重要的,直接操作实际的物理地址风险太大了,如果一个指针指向了系统程序等区域,并且改变了值,那么这个后果可是灾难性的。  因此有了保护模式的概念,保护模式下的地址叫做虚拟地址,在保护模式下,内存的寻址方式为:段式+页式 ,段的定义通过“描述符表”来定义的,这其中包括了全局描述符表(GDT)和局部描述符表(LDT),其段长最大可达到2^32次方=4GB。

实模式和保护模式的区别:

1.进程内存受保护与否:实模式下直接指向实际物理地址,其任何修改都是会造成极大的影响;保护模式下物理内存地址不可直接被程序访问,通过虚拟地址由操作系统转化为实际地址访问。

2. 可寻址空间的大小:实模式下1M,保护模式下4GB;

3. 更高的安全级别:实模式下直接操作cpu,没有安全控制;保护模式下有4个安全级别,其内存的操作会有安全检查。

我相信懂了这些,再别人问你32位的计算机为什么最大只支持4G内存的时候,你可以好好的侃侃而谈了,这也算是技术映射到实际的一个体现吧!

猜你喜欢

转载自blog.csdn.net/qq_38506897/article/details/79432916