Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23089
  • 博文数量: 8
  • 博客积分: 1559
  • 博客等级: 上尉
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-13 20:03
文章分类
文章存档

2009年(8)

我的朋友
最近访客

分类: LINUX

2009-08-11 16:14:34

续上。

用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) |
0

上一篇:谈妥啦,40K。

下一篇:十大计算机小说

给主人留下些什么吧!~~