【OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门

上一篇文章学习了中断与异常的概念:【OS学习笔记】三十四 保护模式十:中断和异常区别

本片文章接着学习以下内容:

  • 中断描述符表
  • 中断门
  • 陷阱门

1 中断描述符表

我们前面讲了无数次,在实模式下,是由位于低地址的1M内存中的中断向量表存放中断过程的地址。但是在保护模式下,有一点不一样,存放中断过程地址的是中断描述符表(IDT),且中断描述符不一定位于低地址处。

顾名思义,在中断描述符表(IDT)中,存放是和中断相关的描述符,包括:中断门,陷阱门和任务门。

任务门在这篇文章中已经学习过了:【OS学习笔记】二十六 保护模式八:任务门—任务切换

中断门和陷阱门的描述符格式如下图所示:

在这里插入图片描述

由以上图,我们总结以下几点内容:

  • 调用门,任务门,中断门和陷阱门的描述符都非常类似,从大的方面来说,因为都用于实施控制转移,故都包括16位的目标代码段选择子,以及32位的段内偏移量
  • 中断门和陷阱门的描述符只允许存放在IDT中,任务门可以位于GDT,LDT,IDT中
  • 保户模式下的IDT可以位于任何位置。因为处理器内部有一个48位的中断描述符表寄存器IDTR,保存着中断描述符表在内存中的线性基地址和界限。如下图,和GDT一样,因为整个系统中只需要一个IDT就够了,所以,GDTR与IDTR不像LDTR和TR,没有也不需要选择器部分。

在这里插入图片描述

  • 这就意味着中断描述符表IDT可以位于内存中的任何位置,只要IDTR指向它即可。不过为了利用高速缓存使处理器的工作效率最大化,建议IDT的基地址是8字节对齐的。

2 保护模式下的中断处理过程示意图

最后我们给出在保护模式下,中断处理过程的示意图:
在这里插入图片描述

  • 当中断和异常发生时,处理器用中断向量乘以8的结果去访问IDT,从中取得对应的中断或者陷阱描述符。因为IDT是由IDTR指向的,所以这很容易做到。
  • 找到相应的描述符后,中断门和陷阱门中有目标代码段的选择子,以及段内偏移量。从而找到GDT或者LDT中的代码段描述符
  • 找到代码段描述符后,就可以从代码段描述符中取出对应的代码段的基地址与段内偏移量,从而取得具体的中断处理过程的代码,就可以执行代码了。

注意,以上没有考虑分页。

3、总结

本文主要学习中断描述符表,中断门和陷阱门三者之间的协调使用关系。

详细的内容还是要参考原书籍,这里只是做一个简单的总结。

学习探讨加个人:
qq:1126137994
微信:liu1126137994

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值