- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
80x86 保护运行模式
80x86 保护运行模式
80386 概述
80386 是一个高级的32 位微处理器,专门用于多任务的操作系统,并为需要高性能的应用所设计。32
位的寄存器和数据通道支持32 位的寻址方式和数据类型,处理器可以寻址最高可达4GB 的物理内存以及
64TB(246字节)的虚拟内存。芯片上的内存管理包括地址转换寄存器、高级多任务硬件、保护机制以及分
页虚拟内存机制。下面针对系统编程,概要说明使用80386 的这些基本原理。
系统寄存器
设计用于系统编程的系统寄存器主要包括以下几类:
标志寄存器EFALGS;
内存管理寄存器;
控制寄存器;
调试寄存器;
测试寄存器。
系统标志寄存器EFLAGS 控制着I/O、可屏蔽中断、调试、任务切换以及保护模式和多任务环境下虚拟
8086 程序的执行。其中主要标志见下图所示。
31 23 15 7 0
0 0 0 0 0 0 0 0 0 0 0 0 O 0
V
M
R
F
0
N
T
IO
PL
O
F
D
F
I
F
T
F
S
F
Z
F
0
A
F
0
P
F
1
C
F
其中系统标志:VM – 虚拟8086 模式;RF – 恢复标志;NT – 嵌套任务标志;IO PL – I/O 特权级标
志;IF – 中断允许标志。
内存管理寄存器有4 个,用于分段内存管理:
??GDTR – 全局描述符表寄存器(Global Descriptor Table Register);
??LDTR – 局部描述符表寄存器(Local Descriptor Table Register);
??IDTR – 中断描述符表寄存器(Interrupt Descriptor Table Register);
??TR – 任务寄存器。
其中前两个寄存器(GDTR,LDTR)分别指向段描述符表GDT 和LDT。IDTR 寄存器指向中断向量表。TR 寄
存器指向处理器所需的当前任务的信息。
80386 共有4 个控制寄存器,分别是CR0、CR1、CR2 和CR3。格式见下图所示。
31 23 15 7 0
页目录基地址寄存器
Page Directory Base Register (PDBR)
保留
Reserved
CR3
附录
465
页异常线性地址
Page Fault Linear Address
CR2
保留
Reserved
CR1
P
G
保留
Reserved
E
T
T
S
E
M
M
P
P
E
CR0
控制寄存器CR0 含有系统整体的控制标志。其中:
??PE – 保护模式开启位(Protection Enable,比特位0)。如果设置了该比特位,就会使处理器开
始在保护模式下运行。
??MP – 协处理器存在标志(Math Present,比特位1)。用于控制WAIT 指令的功能,以配合协处理
的运行。
??EM – 仿真控制(Emulation,比特位2)。指示是否需要仿真协处理器的功能。
??TS – 任务切换(Task Switch,比特位3)。每当任务切换时处理器就会设置该比特位,并且在解
释协处理器指令之前测试该位。
??ET – 扩展类型(Extention Type,比特位4)。该位指出了系统中所含有的协处理器类型(是80287
还是80387)。
??PG – 分页操作(Paging,比特位31)。该位指示出是否使用页表将线性地址变换成物理地址。
内存管理
内存管理主要涉及处理器的内存寻址机制。80x86 使用两步将一个分段形式的逻辑地址转换为实际物
理内存地址。
??段变换,将一个由段选择符和段内偏移构成的逻辑地址转换为一个线性地址;
??页变换,将线性地址转换为对应的物理地址。该步是可选的。
在分页机制开启时,通过将前面所述的段转换和页转换组合在一起,即实现了从逻辑地址到物理地址
的两个转换阶段。
段变换
下图示出了处理器是如何将一个逻辑地址转换为线性地址的。在转换过程中CPU 使用了以下一些数据
结构:
??段描述符(Segment Descriptors);
??描述符表(Descriptor tables);
??选择符(Selectors);
??段寄存器(Segment Registers)。
31
12 11 22 21 31
基地址
选择符 偏移值
+
页目录
段描述符
描述符表
页表项 页内偏移值 线性地址:
逻辑地址:
0 0
0
15
附录
466
图 段变换示意图
段描述符
段描述符向CPU 提供了将逻辑地址映射为线性地址所必要的信息。描述符是由程序编译器、链接器、
加载器或操作系统创建的。下图示出了描述符的两种一般格式。所有种类的描述符都具有这两种格式之一。
段描述符的各个字段的含义如下:
31 23 15 7 0
基地址(BASE)
位31..
文档评论(0)