操作系统第三次实验问题清单

1. 中断向量

中断向量把中断/异常相应的处理方法联系起来

每种中断都会对应一个中断向量号,而这个向量号通过IDT(中断向量表)就与相应的中断处理程序对应起来了。

2. 中断类型码

我们把每个中断服务程序进行编号,这个号就代表一个中断服务程序,就是中断类型码。这个中断类型码是计算机用来查找中断向量用的。

3. 中断向量表

  • 起始地址:0

  • 每个中断向量包含4Bytes

  • 低地址2个Byte放偏移

  • 高地址两个Byte放段描述符

  • 最多256个中断向量

4. 实模式下中断程序地址如何得到

  • 中断类型号×4=存放中断向量的首地址

  • 按照实模式的寻址方式找到对应的中断处理的入口

5. 保护模式下中断程序地址如何得到

  • 在保护模式下,为每一个中断和异常定义了一个中断描述符,来说明中断和异常服务程序的入口地址的属性

  • 由中断描述符表取代实地址模式下的中断向量表

  • 中断描述符含有中断处理程序地址信息

6. 中断向量的地址如何得到

中断类型号 $\times$ 4

7. 实模式下如何根据中断向量的地址得到中断程序地址

根据中断号获取中断向量值,即对应中断服务程序的入口地址值

8. 解释中断描述符

  • 低地址的0和1两个字节是中断代码的偏移量A15~A0; 高地址的6和7两个字节是中断代码的偏移量A31~A16
  • 2和3两个字节是段选择符,段选择符和偏移量用来形成中断服务子程序的入口地址
  • 4和5两个字节称为访问权限字节,它标识该中断描述符是否有效、服务程序的特权级和描述符的类型等信息

9. 保护模式下中断描述符表如何得到

CPU切换到保护模式之前,运行于实模式下的初始化程序必须使用LIDT指令装载中断描述符表IDT,将IDT基地址与段界值装入IDTR。

10. 保护模式下中断门如何得到

查中断描述符表以IDTR指定的中断描述符表的基地址为起始地址,用调用号N×8算出偏移量,即为N号中断门描述符的首地址,由此处取出中断门的8个字节

11. 保护模式下如何根据中断门得到中断处理程序

查全局或局部描述符表根据中断门中的选择子(段选择符)和偏移量得到中断处理程序入口

12. 中断的分类,举例不同类型的中断

  • 由CPU以外的事件引起的中断,如I/O中断、时钟中断、控制台中断
  • 来自CPU的内部事件或程序执行中的事件引起的中断,如由于CPU本身故障、程序故障、请求系统服务的指令引起的中断。

13. 中断与异常的区别

  • 中断是CPU具备的功能,异常是软件运行过程中的一种开发过程中没有考虑到的程序错误
  • 中断是CPU暂停当前工作,有计划地去处理其他事情,一般可以预知,也有事先制定的处理过程,处理中断时,程序正常运行;异常是CPU遇到了无法响应的工作,而后进入一种非正常状态,异常的出现表明程序有缺陷。
  • 中断是异步的,异常是同步的
  • 中断和异常的返回点
    • 良性的如中断和trap,处理完后会返回原来的指令流中的下一条指令
    • 恶性的如fault和abort,若修复fault,重新执行;不可修复的fault和abort不再返回
  • 中断是由于当前程序无关的中断信号触发的,CPU对中断的响应是被动的,且与CPU模式无关;异常是由CPU控制单元产生的,大部分异常发生在用户态

14. 实模式和保护模式下的中断处理差别

保护模式下的中断处理与实模式下的中断处理最大区别在于寻找中断处理代码入口的方式

实模式直接根据中断号查中断向量表获取

保护模式要先从IDTR中获得中断描述符表的首地址,再根据调用号×8得到中断描述符,再根据其中的选择子和偏移量获取

15. 如何识别键盘组合键

为第一个键设定一个变量,按下就置为1,释放置为0

16. IDT是什么,有什么作用

中断描述符表,存中断描述符

17. IDT中有几种描述符

最多256种

18. 异常的分类

  • Fault:是一种可被更正的异常,一旦被更正,程序继续运行
  • Trap:一种在发生Trap的指令执行后立即被报告的异常,允许程序正常执行
  • Abort:不总是报告精确异常发生位置的异常,不允许程序继续执行

19. 用户态和内核态的特权级分别是多少

3,0

20. 中断向量表中,每个中断有几个字节?里面的结构是什么?

4,低2Byte存偏移,高2Byte放段描述符

21. 中断异常的共同点,不同点

共同点:

  • 都是程序执行过程中的强制性转移,转移到相应的处理程序
  • 都是软件或者硬件发生了某种情形而通知处理器的行为

不同点:

(参考13题)