资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
11.3 保护模式中断前面的第5章专门学习了微型计算机的中断 系统,因而读者对中断机理与操作过程应该 有了一个清晰的认识,然而这一章的内容仅 局限于实模式操作下的中断。保护模式下的 中断机理同实模式中断机理的本质与目的 是一致的,指令格式也完全一样,但具体操 作过程差别较大,本节主要针对其中的差别 作一些解说。11.3.1 中断描述符表与中断门保护模式中断与实模式中断相比,实现的具体方法存在以下一些主要的差别: 保护模式下用中断门对应实模下的 中断向量,但数量仍然是 256 个,即保护模 式下使用了 256 个中断门,每个中断门用一 个中断描述符来描述。 保护模式下用中断描述符表(Intrrupt Descriptor Table,IDT)对应实模下的中断向 量表,表格的大小也发生了变化。每个中断 门描述符占用8个字节,因此IDT的大小为 256X8 = 2KB。CPU的中断描述符表地址寄 存器IDTR中存放着IDT的基地址和段界大 小,因此通过装载指令 LIDT 就可以将 IDT 定位到内存的任意位置。同全局描述符表一样,中断描述符表也 是唯一的。中断描述符表的实际大小可以通 过 IDTR 中设定的段界值实现调整。例如当 系统仅需要 063 号中断时, IDT 使用 512 字节即可。一旦出现超出设定范围的中断, 例如INT 64,CPU就会进入关闭(Shutdown) 模式,将D/_、M/_、W/一三根控制线以及CIOR置于相应的关闭模式电平。BE7 BE0 实模式中断服务入口地址寻址范围 限制在最低端的 1 MB 之内,只需一次性查 找中断向量表就直接获取了中断服务程序 的入口地址。保护模式中断服务入口地址寻 址范围没有限制,因此要通过2次查表才能 得到中断服务程序的入口地址,从而提高了 安全性。图 11.12 将实模式与保护模式下的 中断做了一个简单的对比描述,下面再作一相对于软中断指令INT N实模式只要使用调用号Nx4即可找到该向 量的首地址,由此处再转移到中断服务程 序。保护模式下的中断过程则较为复杂,它 要借助中断门描述符来获取中断子程序这 个目标段的描述符,也就是说必须经过两次 查表才能获得中断服务子程序的入口地址, 其具体操作过程简述如下。 装载中断描述符表寄存器CPU 切换到保护模式之前,运行于实模 式下的初始化程序必须使用 LIDT 指令装载 中断描述符表IDT,将IDT基地址与段界值 装入IDTR。如果不完成这一步操作,系统 就会 100%崩溃。在返回实模式或系统复位 时,IDTR中自动装入0OO00OH的基地址值 与03FFH的段界值。可见实模式的中断向量 表是固定在存储器的最底部,而保护模式下 的 IDT 则是可以改变的。 查中断描述符表以 IDTR 指定的中断描述符表的基地址 为起始地址,用调用号NX8算出偏移量, 即为 N 号中断门描述符的首地址,由此处取 出中断门的 8 个字节,其结构如图 11.13, 其中记录了 16 位的中断门目标段选择器和 目标段的 32 位偏移量。 查全局或局部描述符表 由中断门目标段选择器中的 TI 位指定 当前是查GDT还是LDT,由索引值乘8获 取查表偏移量找到目标段描述符,该描述符 中记录了目标段的基地址、段界及各种属 性。目标段中的偏移量31. 16PDPL0 1 1 1 00 0 0 0 0 0 0 0目标段选择器目标段中的偏移量15.0161514131287 目标段的基图地11.址13 中断门目描述符标的结段构 的 32 位偏移 量之和即为所需中断服务程序的入口地址。可以说,第、步是为了获取中断的目标 对象,后面的步骤则同前面11.2.7 小节介绍 的寻址过程完全相同。值得注意的是,图 11.12 着重实模式与 保护模式的对比描述,因而保护模式中省略 了第步的框图。中断调用通常会导致特权级的变化,例如当 一个 PL=3 的应用程序被中断而暂停后,可 以进入 PL=0 的内核层进行中断处理。11.3.2 保护模式下的异常中断在第 5 章的表 5.1 中列出了 IA 体系微型计算 机的全部中断向量,并对实模式下的各中断 向量对应的中断逐个做了解说。因此这里只 需对保护模式下的 5个异常中断作一点补充 说明。 非法任务状态段 任务状态段 TSS 的段 界限不正常出现的中断,通常是由于 TSS 未正常初始化而引起的,中断向量为 0AH。 段不存在 在描述符指示器中的 P=0 ,表 示该段还未调入内存中,或者为非法段出现 的中断,中断向量为 0BH。 堆栈段异常 访问堆栈段时的段界限溢出或者该段不在内存中(P = 0)而产生的中 断,中断向量为 0CH。 一般保护错误 在保护模式下出现的众 多异常情况都会产生此种中断,中断向量为 ODH。它们包括: 描述符表段界限溢出; 违反特权级规则; 装载非法的描述符段; 向受保护的代码段写入; 从只执行代码段读出; 向只读数据段写入; 段界限溢出; 执行 CTS、HLT、LGDT、LIDT、LLDT、LMSW 或 LTR 指令时 CPL=IOPL ; 执行 CLI、IN、INS、LOCK、OUT、OUTS 与STI指令时CPLIOPL,即当前特权级低 于 I/O 访问特权级。 页故障 32 位微处理器中存储器分页管 理时的任何页故障都会引起此类中断,中断 向量为 0EH。1133保护模式下的DPMI控制功能DPMI(DOS Proteted Mode Interface)控 制功能或者控制函数是一种保护模式下的 软件中断,系统使用了 2FH 与 31H 两个中 断向量号,因而构成了 INT 2FH和INT 31H 两条保护模式软件中断指令。在保护模式操 作系统环境下,用户的应用程序可以方便地 调用这些功能子程序,如同第 5章中介绍的 DOS 功能调用一样。(1) INT 2FH 该 控 制 函 数 提 供 了 80H/86H/87H/8AH 4 个功能调用号,分别是 释放时间片/获取CPU操作模式/获取保护模 式 进 入 点 / 获 取 API (Application Programming Interface )应用程序编程接口 进入点。调用时只需在 AH 寄存器中装载 16H,将4个调用号中的某一个装入AL寄 存器即可。(2) INT 31H 该控制函数提供了 72个功能 调用号,而且功能号使用 16 位,调用时作 为入口参数直接装入 AX 寄存器即可 。例 如AX=0006H的功能调用是获取某段的基 地址;AX = 0201H的功能调用是设置实模 式的中断向量;AX = 0506H是获取某页的 属性;AX = 050BH的功能调用是获取存储
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号