这张图要注意:右边两个0-15,其中上面的是LDTR, 下面的是选择子.
图下第五个标线,是两个线交叉的,实际上第五个线是指向右边水平的那个线.
没有箭头的两组线分别表示GDT的区间,LDT的区间
3和3'之间的两个没有箭头的线,是表示分别表示区间的线.
3'找到LDT的基址.
右边的GDT LDT放大的表 是上下分隔下来的.
内存线性地址,是个逻辑地址,所有GDT LDT ,各个真实的段,都在这上面.
这一个一个在内存线性地址上的段,都对应了代码中的一个一个段.所以把代码分成一个段一个段来看就比较清楚了.
GDT,LDT里有若干个描述符,每个描述符64位,8个字节.所以在内存线性地址上也占有空间.
-------------------------------------------------------------------------------------------------
涉及到段选择子,都是由GDTR,LDTR,GDT,LDT,选择子,和偏移量共同来找到段的真实地址.
选择子TI为0 GDTR--GDT基址--选择子--->段基址+偏移量 得到段的真实地址
选择子TI为1 GDTR--GDT基址--LDTR--LDT基址--选择子--->段基址+偏移量 得到段真实地址
(LDT选择子) 这个是直接到LDT基址,上面那个GDT选择子是到具体段基址.