实模式:
实模式简单来说就是16位模式(也有16位保护模式,但由于地址线的限制,实则都差不多),在16位模式下是使用20根地址线,可以寻址1MB内存,但又由于处理器内部的寄存器只有16位(以前的处理器),因此为了能访问整个1M内存,所以采用段地址+偏移地址的寻址方式(段地址*16+偏移地址)。
主要特点
1.内部寄存器为16位
2.最大寻址空间为1MB
3.可访问内存中的任意位置
保护模式:
保护模式是工作在32位模式下,具有32位的内部寄存器,以及32(or64)根地址线,最大访问空间为4GB内存,可以访问整个4G内存空间,但由于依然是在x86处理器的架构下,为了兼容,而依然采用段式寻址空间。
主要特点
1.内部寄存器有32位
2.最大寻址空间为4GB
3.段寄存器中保存段的选择子(不再是段基地址)
比较:
实模式和保护模式之间差别挺大的,保护模式运算能力、寻址能力都增强,但最大的差别还是保护模式的安全性能大大加强,而实模式下几乎没有安茜可讲,因为随便一个程序都可以自由访问内存中的任意空间,因此加强安全性能的方法莫过于对内存访问模式的改变:
内存访问模式:
本质上还是采用段+偏移的方法,
1.实模式
段寄存器(cs,ss,es,ds…)中存储的就是段基地址,可以没有限制的读写,也就是使用段寄存器时,就是直接用的里面存储的内容
2.描述符表
在来看保护模式之前,先来看一下描述符表:
描述符表就是描述符的集合,描述符存储的是段相关的信息,描述符统一的一个挨着一个的放在内存的一段空间中,这就构成了一个描述符表。
1.全局描述符表(GDT)是为整个软硬件系统服务的,必须在进入保护模式之前定义。
2.局部描述符表(LDT)是用户程序自己使用的,因此每个用户程序都有一个LDT,并且每个LDT在GDT中都有一个对应的描述符。
并且为了跟踪GDT,处理器内部专门有一个寄存器来负责:
1.全局描述符表寄存器(GDTR)
该寄存器称为全局描述表寄存器(GDTR),该寄存器为48位,分别是32位的基地址和16位的边界,
描述符边界也就是表的大小,最大为64KB,又由于一