欢迎来到天天文库
浏览记录
ID:26995839
大小:1.02 MB
页数:163页
时间:2018-11-30
《保护模式及其编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章保护模式及其编程10.1保护模式基础10.2虚拟内存管理10.3特权级保护10.4任务10.5中断和异常10.6虚拟8086模式10.7操作系统类指令10.1保护模式基础在保护模式下:寻址高达4GB的物理地址空间支持存储器分段管理机制和分页管理机制支持多任务支持4个特权级和配套的特权检查机制区分不同级别的代码10.1.132位CPU内部结构CPU有8个处理单元:执行单元、分段单元、分页单元、总线单元、指令预取单元、指令译码单元、高速缓存单元和浮点运算单元。1.总线单元总线单元是CPU与存储器和I/O的接口总线接口对外提供:32位
2、(或64位)数据总线、32位(或36位)地址总线以及控制总线总线单元负责完成所有外部总线操作,能够产生控制地址锁存器和数据总线收发器工作的控制信号。2.指令预取单元指令预取单元实现指令流队列的机制CPU可以预取16字节的指令代码预取进来的指令要保存在FIFO队列中3.指令译码单元指令译码单元接收FIFO队列的输出指令译码单元将接收到的机器代码指令译码为微代码指令,并供执行单元使用4.执行单元执行单元取出译码后的指令并执行该操作,包括:算术逻辑单元ALU寄存器组专用乘法器移位器控存(ROM)5.分段和分页单元分段和分页单元负责地址产生、地
3、址转换和对总线接口单元的段检查。CPU存储器管理的分段单元用硬件进行高速地址计算,完成逻辑地址到线性地址的转换和保护性检查;分页单元实现保护模式下的分页机制,它可以将线性地址转换成物理地址,并由总线单元输出。6.浮点运算单元浮点运算单元集成在80486及以上的CPU中;对于80386,需要另外一个数学运算协处理器80387来执行浮点运算。7.高速缓存单元高速缓存单元将最近被访问的内存单元的内容保存在CPU内部的Cache中。下次访问这些内存单元时,CPU直接访问Cache就可以存取这些单元的内容。由于Cache的访问速度比内存快,高速缓
4、存单元能够显著提高程序的运行速度。10.1.2三种运行模式CPU具有三种运行模式:实模式、保护模式和虚拟8086模式,关系如下:1.实模式CPU被复位(加电)时,自动进入实模式。实模式不支持硬件上的多任务切换CPU不能对内存进行分页管理实模式也不支持特权级DOS操作系统运行于实模式下2.保护模式实模式下对一系列的寄存器进行设置,就可以进入保护模式。CPU提供了段式和页式内存管理功能CPU支持多任务和特权级Windows/Linux操作系统运行于保护模式下3.虚拟8086模式虚拟8086模式是为了在Windows/Linux系统中执行DO
5、S程序而设计的,它是一种经过“修改”的保护模式。4.特权级在保护模式下,CPU有4个特权级(0~3),操作系统运行在高的特权级(0)上,而应用程序运行在低的特权级(3)上。10.1.3寄存器32位CPU支持的寄存器有以下几种:1.通用32位寄存器分别是:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP。主要用于算术运算、逻辑运算以及对内存操作数的寻址。2.标志寄存器标志寄存器EFLAGS也扩展为32位,位11到位0和8086完全相同。这里主要扩展了4个标志位:V86模式位VM(位17)此位为1时,表示当前CPU正工作在V8
6、6模式下;此位为0,表示当前CPU工作在实模式或保护模式下。嵌套任务位N(位14)当前的任务嵌套在其他任务中,此位为1,否则为0恢复位RF(位16)I/O域IOPL(位13和12)3.指令指针寄存器EIP和堆栈指针寄存器ESP指令指针寄存器EIP,它总是下一条要执行的指令的偏移地址,偏移地址指的是这条指令在代码段中的位置。堆栈指针寄存器ESP,用于存放当前堆栈段中栈顶的偏移地址。他们的低16位分别是IP和SP4.调试寄存器DR调试寄存器提供高级的调试功能例如:可以设置一个数据断点,在程序访问某个数据时激活调试程序。5.测试寄存器TR测试
7、寄存器提供对TLB的测试。6.全局描述符表寄存器全局描述符表GDT是用来定义全局存储器空间的一种机制,它用段描述符说明一个全局存储器中的段,每个GDT最多含有8192个描述符(8192864KB)。用全局描述符表寄存器GDTR指出GDT的位置和大小。GDTR是48位的寄存器。其最低16位是限长,给出GDT的字节大小;其高32位是基址,指出GDT在物理存储器中存放的基地址。例如:GDTR=0E003F0003FFH,则说明GDT的地址为0E003F000H,长度为3FFH+1=400H。其中可容纳400H/8=80H个段描述符。7.中
8、断描述符表寄存器中断描述符表IDT中保存着中断门描述符;IDT最多包含256个门描述符,CPU最多支持256个中断。中断描述符表寄存器IDTR是48位的寄存器。其最低16位是限长,给出IDT的字节大小;其高
此文档下载收益归作者所有