1 / 16
文档名称:

接口课程设计.doc

格式:doc   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

接口课程设计.doc

上传人:xgs758698 2016/3/5 文件大小:0 KB

下载得到文件列表

接口课程设计.doc

相关文档

文档介绍

文档介绍:湖北大学本科课程设计微机原理与接口课程设计 08 计科二班陈鹏学号 2007221104210048 摘要本文首先简要介绍了保护模式下的相关知识,详细介绍了任务状态段和格式,以及各部分代表的含义。然后介绍了任务切换的两种途径——直接通过 TSS 进行任务切换和通过任务门进行任务切换,然后介绍了任务切换的过程,最后用实例实现过程,该实例都通过介绍的两种途径分别实现了,最后是对该实例的说明和解释。关键词:保护模式,任务间切换,汇编语言目前, IA-32 系列的处理器, 均具有 4 种工作模式: 实模式, 保护模式和虚拟 8086 模式和系统管理模式。只有在保护模式下, IA-32 处理器才能发挥其强大的功能。保护模式下任务的切换是经常遇到的问题。下面说明保护模式下任务切换的原理及实现。 1 相关知识 保护模式介绍在保护模式下,通过段页式寻址机制来实现多任务之间的有效隔离,支持任务与任务之间的分离和操作系统与任务之间的分离,特权分级系统和保护机构保护了虚空间到实空间的切换安全。操作系统的代码和数据不允许被应用程序所访问,因此操作系统的代码和应用程序都被有效保护。 微处理机的保护方式寄存器微处理机由于系统存储管理的需要, 配备了系统地址寄存器。其中 4 个寄存器用于控制分段存储器管理中数据结构的位置,它们的名称分别是系统地址寄存器(即全局描述符表寄存器 GDTR 和中断描述符表寄存器 IDTR ) 以及描述符寄存器( 局部描述符寄存器 LDTR 和任务状态寄存器 TR), 存储管理寄存器只能在保护方式下使用,所以又称其为保护方式寄存器。 GDTR,LDTR,IDTR 都是 48 位的寄存器, 用来保存全局描述符表 GDT 的 32 位线性基地址和 16 位的段界限。任务寄存器 TR 保存着 32 位的线性基地址,32 的段界限、描述符属性以及当前正在执行任务的 16 位段选择符。任务寄存器访问的是全局描述符表中的任务状态段 TSS 描述符。 BIT47-BIT16 BIT15-BIT0 全局描述符表寄存器 GDTR 基地址界限湖北大学本科课程设计 GDTR 和 IDTR 的结构如右图 TR和 LDTR 的结构 任务状态段任务状态段(Task State Segment) 是保存一个任务重要信息的特殊段。任务状态段描述符用于描述这样的系统段。任务状态段寄存器 TR 的可见部分含有当前任务的任务状态段描述符的选择子, TR 的不可见的高速缓冲寄存器部分含有当前任务状态段的段基地址和段界限等信息。任务状态段 TSS 的基本格式 31 150 中断描述符表寄存器 IDTR 基地址界限 BIT15-BIT0 BIT31-BIT0 BIT31-BIT0 BIT11-BIT0 局部描述符表寄存器 LDTR 选择子基地址界限属性任务状态段寄存器 TR 选择子基地址界限属性 I /O位图基址 T LDT 选择子 gs fs ds ss cs es edi esi ebp esp ebx edx 湖北大学本科课程设计从图中可见, TSS 的基本格式由 104 字节组成。这 104 字节的基本格式是不可改变的, 但在此之外系统软件还可定义若干附加信息。基本的 104 字节可分为链接字段区域、内层堆栈指针区域、地址映射寄存器区域、寄存器保存区域和其它字段等五个区域。 . 1. 寄存器保存区域寄存器保存区域位于 TSS 内偏移 20H 至 5FH 处, 用于保存通用寄存器、段寄存器、指令指针和标志寄存器。当 TSS 对应的任务正在执行时,保存区域是未定义的;在当前任务被切换出时,这些寄存器的当前值就保存在该区域。当下次切换回原任务时,再从保存区域恢复出这些寄存器的值,从而,使处理器恢复成该任务换出前的状态, 最终使任务能够恢复执行。从上图可见, 各通用寄存器对应一个 32 位的双字, 指令指针和标志寄存器各对应一个 32 位的双字;各段寄存器也对应一个 32 位的双字,段寄存器中的选择子只有 16 位,安排再双字的低 16 位,高 16 位未用,一般应填为 0。 . 2. 内层堆栈指针区域为了有效地实现保护,同一个任务在不同的特权级下使用不同的堆栈。例如,当从外层特权级 3 变换到内层特权级 0 时,任务使用的堆栈也同时从 3 级变换到 0 级堆栈;当从内层特权级 0 变换到外层特权级 3 时,任务使用的堆栈也同时从 0 级堆栈变换到 3 级堆栈。所以,一个任务可能具有四个堆栈,对应四个特权级。四个堆栈需要四个堆栈指针。 TSS 的内层堆栈指针区域中有三个堆栈指针,它们都是 48 位的全指针(16 位的选择子和 32 位的偏移) ,分别指向 0 级、 1 级和 2 级堆栈