第九章 32位CPU及Windows基础_第1页
第九章 32位CPU及Windows基础_第2页
第九章 32位CPU及Windows基础_第3页
第九章 32位CPU及Windows基础_第4页
第九章 32位CPU及Windows基础_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章32位CPU及Windows基础 9 1保护模式基础9 2内存管理9 3Windows环境 9 1保护模式基础 在保护模式下 寻址高达4GB的物理地址空间支持存储器分段管理机制和分页管理机制支持多任务支持4个特权级和配套的特权检查机制区分不同级别的代码 9 1 132位CPU内部结构 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的访问速度比内存快 高速缓存单元能够显著提高程序的运行速度 1 全局描述符表寄存器GDTR 全局描述符表GDT是用来定义全局存储器空间的一种机制 它用段描述符说明一个全局存储器中的段 每个GDT最多含有8192个描述符 8192 8 64KB 用全局描述符表寄存器GDTR指出GDT的位置和大小 9 1 2程序不可见寄存器 GDTR是48位的寄存器 其最低16位是限长 给出GDT的字节大小 其高32位是基址 指出GDT在物理存储器中存放的基地址 例如 GDTR 0E003F0003FFH 则说明GDT的地址为0E003F000H 长度为3FFH 1 400H 其中可容纳400H 8 80H个段描述符 2 中断描述符表寄存器IDTR 中断描述符表IDT中保存着中断门描述符 IDT最多包含256个门描述符 CPU最多支持256个中断 中断描述符表寄存器IDTR是48位的寄存器 其最低16位是限长 给出IDT的字节大小 其高32位是基址 指出IDT在物理存储器中存放的基地址 例如 IDTR 0E003F40007FFH 则说明IDT的地址为0E003F400H 长度为7FFH 1 800H 其中可容纳800H 8 100H个中断门描述符 3 局部描述符表寄存器LDTR 局部描述符表LDT含有与系统中某一个任务相关的各个段的描述符 局部描述符表寄存器LDTR并不直接指出LDT的位置和大小 而是指向一个LDT描述符 由LDT描述符指出LDT的位置和大小 4 任务寄存器TR 任务寄存器TR在保护模式的任务切换机制中使用 TR是16位的选择符 其内容为索引值 它选中的是TSS描述符 任务状态段TSS中包含启动任务所必需的信息 它在存储器的基地址和限长 大小 由TSS描述符指出 TSS描述符放在全局描述符表GDT中 而TR内容指出了TSS描述符在GDT中的顺序号 5 控制寄存器 存在着4个系统控制寄存器CR0 CR3 CR0的低5位是系统控制标志 被称为机器状态字MSW MSW中各位的含意 PE 保护模式允许标志等于0为实模 等于1为保护模式MP 运算协处理器存在位等于1表示系统中有运算协处理器 6 调试寄存器DR 调试寄存器提供高级的调试功能例如 可以设置一个数据断点 在程序访问某个数据时激活调试程序 程序要访问的内容不在内存中 CPU会产生一个异常 由操作系统的存储器管理程序来处理 将所需的内容装入内存中 这就是所谓的虚拟存储器 它并不完全是真正的内存空间 也称做虚拟内存 9 2内存管理 1 段寄存器CS DS ES SS FS GS 在实模式下 它们的用法和16位CPU相同 在保护模式下 段寄存器不直接存放段基址 而是存放一个索引 由索引从GDT或LDT中找到段描述符 从而确定关于这个段的全部描述信息 这个索引被称为段选择符 9 2 1分段内存管理 选择符的格式如下RPL 请求特权级 2位二进制数字 求特权级是将要访问的段的特权级 TI 表指示符 为0时 从GDT中选择描述符 为1时 从LDT中选择描述符 Index 索引 指出要访问描述符在段描述符表中的顺序号 2 段描述符 段描述符用于描述代码段 数据段和堆栈段 段描述符的格式如图 段描述符位于GDT或LDT中 占64位 由以下几个部分组成 段基址 32位 限长 20位 访问权限 8位 属性 4位 访问权限字节 访问权限字节定义如下 P 存在位等于1时表示该段己装入内存 等于0时表示该段没有在内存中 访问这个段会产生段异常 DPL 描述符特权级 说明这个段的特权级 S 描述符类型位为1时 这个段为代码段 数据段或堆栈段 为0时 为系统段描述符 E 可执行位 区分代码段和数据段S 0且E 1时 这是一个代码段 可执行 S 0且E 0时 这是一个数据段或堆栈段 不可执行 E 0时 后面的两位为ED和W 若E 1时 后面的两位为C和R ED 扩展方向位为0时 段从低地址向高地址扩展 偏移量小于等于限长 为1时 段从高地址向低地址扩展 偏移量必须大于限长 W 写允许位为0时 不允许对这个数据段写入 为1时 允许对这个数据段写入 C 一致位为0时 这个段不是一致代码段为1时 这个段是一致代码段R 读允许位为0时 不允许读这个段的内容为1时 允许读这个段的内容A 访问位为1表示段已被访问过为0表示段未被访问过 属性位 属性位包括G D AVL等G 粒度位 G 1时 限长以页为单位 G 0时 限长以字节为单位 D 默认操作数宽度 D 1时 为32位数据操作段 D 1时 为16位数据操作段 AVL 可用位 这一位保留给操作系统或应用程序来使用 段描述符高速缓存 在指令执行过程中 只有段寄存器的值发生改变时 才需要到GDT或LDT中装入段描述符 如果段寄存器的值不改变 高速缓存中的段描述符可以被直接引用 这样就避免了到主存中频繁读取段描述符 提高了CPU的效率 3 段描述符的实际例子 略 见书本p293 4 段的属性 DS段的线性地址范围为 0000000016 FFFFFFFF16 与CS段完全相同 9 2 2页式内存管理 使用分页机制的好处 可以把每个活动任务当前所必需的少量页面放在内存中 而不必将整个段调入内存 从而提高了内存的使用效率 1 分页 页的长度固定为4KB页与页之间没有重叠页式内存简化了存储器管理不能充分地利用内存 会产生碎片 2 线性地址到物理地址的映射 线性地址按页为单位映射到物理地址每一个线性页面只能映射到一个物理页面上多个线性页面可以映射到同一个物理页面上 3 线性地址转换为物理地址的过程 32位线性地址被划分为3个部分 页目录索引 10位 对页目录的索引页表索引 10位 对页表的索引字节索引 12位 线性地址在页面内的偏移 3 线性地址转换为物理地址的过程 续 线性地址转换为物理地址的过程 1 以PDBR的值作为页目录的基地址 定位到页目录 2 用线性地址中的页目录索引 10位 在页目录表中找到一个页表描述符 3 页表描述符的高20位给出了页表的基地址 4 线性地址中的页表索引 10位 指示了被访问的页在页表中的序号 5 页描述符的高20位给出了物理页面的基地址 6 物理页面的基地址再加上线性地址中的12位字节索引 便得到32位线性地址对应的32位物理地址 4 页表项 页表项就是在分页转换时用到的页表描述符和页描述符 它们都是32位的 其格式 页表项的低12位提供保护功能和统计信息 U S位 R W位 P位实现页保护机制 而D位和A位提供统计信息 U S 用户 管理员位U S 0时 只有操作系统程序可以访问该页 而不允许用户程序访问U S 1时 允许用户程序访问该页R W 读写位R W 0 用户程序对页面只有读权限 不能写入 R W 1时 可读 写 P 存在位 P 1 页表或页存在于物理内存中 P 0 页表或页没有在物理内存中 A 访问标志 如果对某页表或页访问过 CPU设置页表项中的A位为1 D 写入位 D 1时表示对该页进行过写操作 D 0时表示对该页还没有进行过写操作 AVL占3位 可以由操作系统使用 9 2 3寻址方式的增强 1 8种寻址方式见表9 3 表9 38种寻址方式中的有效地址 2 基址变址比例相对寻址 操作数的地址是由基址寄存器 变址寄存器乘以一个比例数和相对量这3个部分相加得到的结果 比例数只能有1 2 4 8 这4种取值 举例 MOVESI 0040200AHMOVEBX 4MOVEDI ESI EBX 2 4 9 3Windows环境 9 3 1Windows程序的执行环境1 虚拟内存2 平坦 内存模式3 段寄存器4 内存布局 9 3 2Windows的保护机制 80386设置了4个特权级 编号为0 3 最高的是特权级0 其次是1 2 3 Windows只使用了特权级0和特权级3 特权级0中运行的是操作系统内核和各种硬件驱动程序 特权级3中运行的是各种应用程序 CS段寄存器的最低2位表示当前运行程序的特权级 操作系统内核使用特权级0 CS设置为0008H 应用程序使用特权级3 CS设置为0023H Windows采用保护机制主要为了检查和防止应用程序的越权操作 保护机制主要由下列几方面组成 1 段的类型检查 2 页的类型检查 3 段的特权级 4 控制转移的检查 5 对I O地址的保护 6 对系统资源的保护 如果违反了上述6条保护规则 则会引发保护异常 处理器将会进入到对应的异常处理程序中去 应用程序不能直接对系统地址空间进行读写 它只能使用属于它自己的2GB用户地址空间 为了满足某些应用程序对内存空间的更高需求 Windows允许设置为3GB用户地址空间和1GB系统地址空间 堆栈具有 先进后出 的特点 CPU提供了专门的指令 PUSH和POP 用于对堆栈栈顶单元的存取 9 3 332位堆栈 1 堆栈空间 与堆栈相关的3个寄存器是 SS ESP EBP 在Windows用户模式下 SS段寄存器的内容通常和DS ES段寄存器的相同 段的范围是从00000000H 0FFFFFFFFH的所有4GB逻辑地址空间 程序的代码 数据 堆栈都被安排在这个空间范围内 ESP extendedstackpointer 寄存器中的内容作为堆栈的当前指针 PUSH POP CALL RET等指令都与堆栈有关 使用由SS ESP指向的堆栈单元 EBP extendedbasepointer 寄存器中的内容作为堆栈的 基准 指针 SS EBP指向的地址作为基准地址 在函数 即子程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论