80386四种运行模式
- 实模式
- 保护模式
- SMM模式
- 虚拟8086模式
实模式:80386加电启动后出于实模式运行状态,在这种状态下软件可访问的物理内存空间不能超过1MB,且无法发挥Interl 80386以上级别的32位CPU的4GB内存管理能力。
保护模式:支持内存分页机制,提供了对虚拟内存的良好支持。保护模式下的80386支持多任务,还支持优先级机制,不同的程序可以运行在不同的优先级上。优先级一共分0~3 4个级别,OS运行在最高的优先级0上,应用程序则运行在比较低的级别上;配合良好的检查机制后,既可以在任务间实现数据的安全共享也可以很好地隔离各个任务。
内存架构
- 地址:访问内存空间的索引
- 80386是32位的处理器,既可以寻址的物理内存地址空间为2^32 = 4G字节
- 物理内存地址空间是处理器提交到总线上用于访问计算机系统中的内存和外设的最终地址。一个计算机系统中只有一个物理地址空间。
- 线性地址空间是在OS的虚拟内存管理之下每个运行的应用程序能访问的地址空间。每个运行的应用程序都认为自己独享整个计算机系统的地址空间,这样可让多个运行的应用程序之间相互隔离。
- 逻辑地址空间是应用程序直接使用的地址空间。
段机制启动、页机制未启动:逻辑地址->段机制处理->线性地址=物理地址;
段机制和页机制都启动:逻辑地址->段机制处理->线性地址->页机制处理->物理地址
寄存器
80386的寄存器:
- 通用寄存器
- 段寄存器
- 指令指针寄存器(寻址相关)
- 标志寄存器
- 控制寄存器
- 系统地址寄存器,调试寄存器,测试寄存器
通用寄存器
- EAX:累加器
- EBX:基址寄存器
- ECX:计数器
- EDX:数据寄存器
- ESI:源地址指针寄存器
- EDI:目的地址指针寄存器
- EBP:基址指针寄存器
- ESP:堆栈指针寄存器
段寄存器:
- CS:代码段
- DS:数据段
- ES:附加数据段
- SS:堆栈段
- FS:附加段
- GS:附加段
指令寄存器 & 标志寄存器
- EIP:指令寄存器
EIP的低16位就是8086的IP,它存储的是下一条要执行指令的内存地址,在分段地址转换中,表示指令的段内偏移地址。
- EFLAGS:标志寄存器
IF(Interrupt Flag):中断允许标志位,由CLI,STI两条指令来控制;设置IF使CPU可识别外部(可屏蔽)中断请求。复位IF则禁止中断。IF对不可屏蔽外部中断和故障中断的识别没有任何作用。
CF,PF,ZF,...