- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
保护模式中断
保护模式中断
前面的第5章专门学习了微型计算机的中断系统,因而读者对中断机理与操作过程应该有了一个清晰的认识,然而这一章的内容仅局限于实模式操作下的中断。保护模式下的中断机理同实模式中断机理的本质与目的是一致的,指令格式也完全一样,但具体操作过程差别较大,本节主要针对其中的差别作一些解说。
11.3.1 中断描述符表与中断门
保护模式中断与实模式中断相比,实现的具体方法存在以下一些主要的差别﹕
① 保护模式下用中断门对应实模下的中断向量,但数量仍然是256个,即保护模式下使用了256个中断门,每个中断门用一个中断描述符来描述。
② 保护模式下用中断描述符表((Intrrupt Descriptor Table,IDT)对应实模下的中断向量表,表格的大小也发生了变化。每个中断门描述符占用8个字节,因此IDT的大小为256×8=2KB。CPU的中断描述符表地址寄存器IDTR中存放着IDT的基地址和段界大小,因此通过装载指令LIDT就可以将IDT定位到内存的任意位置。
同全局描述符表一样,中断描述符表也是唯一的。中断描述符表的实际大小可以通过IDTR中设定的段界值实现调整。例如当系统仅需要0~63号中断时,IDT使用512字节即可。一旦出现超出设定范围的中断,例如INT 64,CPU就会进入关闭(Shutdown)模式,将D/、M/、W/三根控制线以及~置于相应的关闭模式电平。
③ 实模式中断服务入口地址寻址范围限制在最低端的1 MB之内,只需一次性查找中断向量表就直接获取了中断服务程序的入口地址。保护模式中断服务入口地址寻址范围没有限制,因此要通过2次查表才能得到中断服务程序的入口地址,从而提高了安全性。图11.12将实模式与保护模式下的中断做了一个简单的对比描述,下面再作一些解释。
相对于软中断指令
INT N
实模式只要使用调用号N×4即可找到该向量的首地址,由此处再转移到中断服务程序。保护模式下的中断过程则较为复杂,它要借助中断门描述符来获取中断子程序这个目标段的描述符,也就是说必须经过两次查表才能获得中断服务子程序的入口地址,其具体操作过程简述如下。
① 装载中断描述符表寄存器
CPU切换到保护模式之前,运行于实模式下的初始化程序必须使用LIDT指令装载中断描述符表IDT,将IDT基地址与段界值装入IDTR。如果不完成这一步操作,系统就会100%崩溃。在返回实模式或系统复位时,IDTR中自动装入000000H的基地址值与03FFH的段界值。可见实模式的中断向量表是固定在存储器的最底部,而保护模式下的IDT则是可以改变的。
图11.12 实模式与保护模式下的中断对比
② 查中断描述符表
以IDTR指定的中断描述符表的基地址为起始地址,用调用号N×8算出偏移量,即为N号中断门描述符的首地址,由此处取出中断门的8个字节,其结构如图11.13,其中记录了16位的中断门目标段选择器和目标段的32位偏移量。
③ 查全局或局部描述符表
由中断门目标段选择器中的TI位指定当前是查GDT还是LDT,由索引值乘8获取查表偏移量找到目标段描述符,该描述符中记录了目标段的基地址、段界及各种属性。
31 16 15 14 13 12 8 7 0 目标段中的偏移量31…16 P DPL 0 1 1 1 0 0 0 0 0 0 0 0 0 目标段选择器 目标段中的偏移量15…0 图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。
⑷ 一般保护错误 在保护模式下出现的众多异常情况都会产生此种中断,中断向量为0DH。它们包括﹕
① 描述符表段界限溢出﹔
② 违反特权级规则
文档评论(0)