番茄花园-一章概述.ppt
文本预览下载声明
第一章 概述 提纲 80386保护模式简介 Bochs简介 实验环境的搭建 80386保护模式简介 回顾实模式 实模式下的寄存器集合 通用寄存器 段寄存器 状态和控制寄存器 寻址空间与寻址方式 寻址空间 实际物理地址 = (段寄存器 4) + 偏移地址 MOV AX,ES:[1200H] CS=0x0000: IP=0x7c00 和CS=0x0700: IP=0x0c00 以及 CS=0x07c0: IP=0x0000所寻址的地址是完全相同的! 80386保护模式简介(续) 回顾实模式 实模式下的中断 中断向量表存放在物理内存开始的位置(0x0000---0x03ff) 总共最多可以有256个中断向量 00h---04h 号中断向量为系统专用 08h---0fh 硬件中断(8259A使用) 10h---1fh BIOS使用 20h---3fh DOS使用 如常用的 int 21h 40h---ffh 用户使用 80386保护模式简介(续) 一个实模式下用户程序的例子 各个段在物理上必须是连续的 装载程序在将程序装入时需要按照具体的装载位置设置CS、DS、SS 80386保护模式简介(续) 实模式系统存在的问题 安全性问题 程序采用物理地址来实现访存功能,而无法实现对任务的代码和数据的保护 一个程序可以通过改变段寄存器和偏移寄存器修改不属于自己的代码或者数据,甚至操作系统 分段机制本身的问题 段必须是连续的,从而无法利用零碎的空间 段的大小有限制,从而限制了代码的规模 80386保护模式简介(续) 保护模式带来的变化 保护模式下的寄存器 通用寄存器(从16位扩展到32位) EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP 段寄存器(维持16位) CS、DS、SS、ES、FS、GS 状态和控制寄存器(32位) EFLAGS、EIP、CR0、CR1、CR2、CR3 系统地址寄存器 GDTR、IDTR、TR、LDTR 调试与测试寄存器 80386保护模式简介(续) 80386保护模式简介(续) 寻址方式的变化 在保护模式下,分段机制是利用一个称作段选择子的偏移量到全局描述符表中找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,然后再加上偏移地址量便得到了最后的物理地址。 一般保护模式段式寻址可用xxxx:yyyyyyyy表示。其中xxxx表示索引,也就是段选择子,是16位的;yyyyyyyy是偏移量,是32位的。 段选择子(xxxx)为段寄存器,如CS、DS、SS、ES、FS、GS;偏移量(yyyyyyyy)是一个32位寄存器,如ESI、EDI、EBP、ESP。 80386保护模式简介(续) 80386以及以后的处理器专门设计了一个寄存器GDTR(Global Descriptor Table Register),专门用于存储全局描述符表在内存中存放的位置。 80386保护模式简介(续) 段描述符 每个描述符为8个字节(8×8=64位) 代码段和数据段的描述符 80386保护模式简介(续) 段描述符的属性 D/B:对于不同类型段含义不同。 在可执行代码段中,这一位叫做D位,D = 1使用32位地址和32/8位操作数,D = 0使用16位地址和16/8位操作数。 在向下扩展的数据段中,这一位叫做B位,B = 1段的上界为4GB,B = 0段的上界为64KB。 在描述堆栈段的描述符中,这一位叫做B位,B = 1使用32位操作数,堆栈指针用ESP,B = 0使用16位操作数,堆栈指针用SP。 AVL:Available and Reserved Bit,通常设为0。 P:存在位,P = 1表示段在内存中。 DPL:描述符特权级,取值0 ~ 3共4级。0特权级为最高,而3特权级为最低,表示访问该段时CPU所需处于的最低特权级,我们在后面会详细讨论特权级的问题。 S:描述符类型标志,S = 1表示代码段或者数据段;S = 0表示系统段(TSS、LDT)和门描述符。 80386保护模式简介(续) 描述符类型 TYPE和S结合使用,可以表示的描述符类型有:代码段、数据段、TSS、LDT、中断门(Interrupt Gate)、陷阱门(Trap Gate)、调用门(Call Gate)、任务门(Task Gate)。 80386保护模式简介(续) Hello world在实模式下的实现 Hello world在保护模式下的实现 80386保护模式简介(续) 保护模式下的中断管理 在保护模式中,中断的类型可以分为两种。一种是硬件中断(Interrupts),一种是软件中断(Exceptions),又称为异常。 其中硬件中断在系统中是由外部事件所引起的,如:一次I/O操作的结束。其产生与CPU当前所执行的指令没有关系。从是
显示全部