续上。
用Intel手册上的这个图很容易理解逻辑地址到线性地址的转换过程:
先从段选择符中的TI位得知是在GDT中还是在LDT中,然后
段描述符在段描述表里面(GDT或者LDT),由段描述符得到段的基地址,加上逻辑地址的offset,就得到线性地址了,不难理解。
分段是Intel为了兼容32位及以前的处理器而设计的,后来发现不灵活,提出了分页机制,在纯64位处理器里面,分段已经不存在了,但是在IA-32e里面还是又段的影子的,这要看IA-32e运行在什么模式下面,运行在兼容模式下面,久还保留了分段,运行在64-bit模式下,就没有了分段。
Intel手册的原话是这么说的:
In IA-32e mode of Intel 64 architecture, the effects of segmentation depend on whether the processor is running in compatibility mode or 64-bit mode. In compatibility mode, segmentation functions just as it does using legacy 16-bit or 32-bit protected mode semantics. In 64-bit mode, segmentation is generally (but not completely) disabled, creating a flat 64-bit linear-address space.
在现代流行的操作系统中,已经不用分段了,所以,现在我们的脑子里面可以把分段暂时放一放了,别让他影响后面的“分页”
再来看分页,既然现在的主流OS不再用分段了,那我们的线性地址空间,就不要再被想成一段一段的了,而是一页一页的。看这个图:
注意到中间的Linear Address Space没有?这个空间就被分成页了。
=========================未完,待续==================
阅读(889) | 评论(0) | 转发(0) |