段是什么?
段是管理内存的一种方法,因为物理内存就是一个一维的数组,用起来很不方便,所以要换一种方式来管理内存。
通常我们写程序的时候不管各种函数,库之类的东西存在内存的什么位置,这种看待程序的方法就是逻辑地址空间,段就是建立程序员视角和实际的物理地址空间的一种映射。
段中有一个叫做段描述符的东西,这个段描述符来描述该段的一些信息;段描述符位数较多,16位的段寄存器放不下,所以段寄存器只存放“数组下标”,把较长的段描述符存放在内存中;
找到GDT的方法是GDTR(一个寄存器),用来存放GDT的地址。
所以程序执行的时候
1.先从GDTR中读取GDT的地址
2.再根据段寄存器中的偏移量寻找到数据对象
3.最后将基地址和偏移量相加
段寄存器是什么?
段寄存器看着是16位,其实是96位,只不过其中的80位是不可见的。
其写入时,是写入96位,读取时只能读取前16位