网站大量收购独家精品文档,联系QQ:2885784924

第10章保护模式其编程.ppt

  1. 1、本文档共163页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章保护模式其编程

第10章 保护模式及其编程 10.1 保护模式基础 10.2 虚拟内存管理 10.3 特权级保护 10.4 任务 10.5 中断和异常 10.6 虚拟8086模式 10.7 操作系统类指令 10.1 保护模式基础 在保护模式下: 寻址高达4GB的物理地址空间 支持存储器分段管理机制和分页管理机制 支持多任务 支持4个特权级和配套的特权检查机制 区分不同级别的代码 10.1.1 32位CPU内部结构 CPU有8个处理单元:执行单元、分段单元、分页单元、总线单元、指令预取单元、指令译码单元、高速缓存单元和浮点运算单元。 1.总线单元 总线单元是CPU与存储器和I/O的接口 总线接口对外提供:32位(或64位)数据总线、32位(或36位)地址总线以及控制总线 总线单元负责完成所有外部总线操作,能够产生控制地址锁存器和数据总线收发器工作的控制信号。 2.指令预取单元 指令预取单元实现指令流队列的机制 CPU可以预取16字节的指令代码 预取进来的指令要保存在FIFO队列中 3.指令译码单元 指令译码单元接收FIFO队列的输出 指令译码单元将接收到的机器代码指令译 码为微代码指令,并供执行单元使用 4.执行单元 执行单元取出译码后的指令并执行该操作, 包括: 算术逻辑单元ALU 寄存器组 专用乘法器 移位器 控存(ROM) 5.分段和分页单元 分段和分页单元负责地址产生、地址转换 和对总线接口单元的段检查。 CPU存储器管理的分段单元用硬件进行高速地址计算,完成逻辑地址到线性地址的转换和保护性检查; 分页单元实现保护模式下的分页机制,它可以将线性地址转换成物理地址,并由总线单元输出。 6.浮点运算单元 浮点运算单元集成在80486及以上的CPU中; 对于80386,需要另外一个数学运算协处理器80387来执行浮点运算。 7.高速缓存单元 高速缓存单元将最近被访问的内存单元的内容保存在CPU内部的Cache中。 下次访问这些内存单元时,CPU直接访问Cache就可以存取这些单元的内容。 由于Cache的访问速度比内存快,高速缓存单元能够显著提高程序的运行速度。 10.1.2 三种运行模式 CPU具有三种运行模式:实模式、保护模式 和虚拟8086模式 ,关系如下: 1.实模式 CPU被复位(加电)时,自动进入实模式。 实模式不支持硬件上的多任务切换 CPU不能对内存进行分页管理 实模式也不支持特权级 DOS操作系统运行于实模式下 2.保护模式 实模式下对一系列的寄存器进行设置,就可以进入保护模式。 CPU提供了段式和页式内存管理功能 CPU支持多任务和特权级 Windows/Linux操作系统运行于保护模式下 3.虚拟8086模式 虚拟8086模式是为了在Windows/Linux系统中执行DOS程序而设计的,它是一种经过“修改”的保护模式。 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正工作在V86模式下; 此位为0,表示当前CPU工作在实模式或保护模式下。 嵌套任务位N(位14) 当前的任务嵌套在其他任务中,此位为1,否则为0 恢复位RF(位16) I/O域IOPL(位13和12) 3.指令指针寄存器EIP和堆栈指针寄存器ESP 指令指针寄存器EIP,它总是下一条要执行的指令的偏移地址,偏移地址指的是这条指令在代码段中的位置。 堆栈指针寄存器ESP,用于存放当前堆栈段中栈顶的偏移地址。 他们的低16位分别是IP和SP 4.调试寄存器DR 调试寄存器提供高级的调试功能 例如:可以设置一个数据断点,在程序访 问某个数据时激活调试程序。 5.测试寄存器TR 测试寄存器提供对TLB的测试。 6.全局描述符表寄存器 全局描述符表GDT是用来定义全局存储器空间的一种机制,它用段描述符说明一个全局存储器中的段,每个GDT最多含有8192个描述符(8192?8?64KB)。 用全局描述符表寄存器GDTR指出GDT的位置和大小。 GDTR是48位的寄存器。其最低16位是限长,给出GDT的字节大小;其高

文档评论(0)

181****7127 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档