1.解释中断向量
向量就是确定确切位置的含义,中断向量的含义是可以确定中断服务程序的位置。
中断向量就是中断处理程序的首地址。每个向量长度为4字节。
地址以低位2字节存储偏移量,高位2字节存储段地址。
2.解释中断类型码
把每个中断服务程序进行编号,一个号代表一个中断服务程序,就是中断类型码,是计算机用来查找中断向量用的。(0-255)
3.解释中断向量表
一片专门用来存放所有的中断向量的内存空间。
在内存单元的最低处,地址空间为00000H-003FFH(0-1024B)
中断类型码*4 = 中断向量的首地址
中断向量表提供了中断类型码与中断处理代码段入口地址的映射。
全表含有256个中断向量,包含中断处理程序的起始地址。
前32个中断为硬件系统预留,后224个可由用户自定义。
4.实模式下中断程序地址如何得到
根据中断类型码n,从中断向量表n*4,取得中断处理程序的地址,段地址存入CS,偏移量存入IP,使得CPU转入中断程序运行。
5.保护模式下中断程序地址如何得到
在保护模式下,为每一个中断和异常定义了一个中断描述符,说明中断和异常服务的程序的入口地址的属性;由中断描述符取代实地址下的中断向量表。
1) 以IDTR中中断向量表的基址为起始地址 + 调用号N*8 = 中断门描述符首地址,取出中断门的8个字节
2) 根据中断门的选择子和偏移量得到中断处理程序入口
6.中断向量的地址如何得到
中断类型码*4
7.实模式下如何根据中断向量的地址得到中断程序的地址
低二字节为偏移量,高二字节为段地址
8.解释中断描述符
包含中断处理程序的地址信息,以及多个属性和类型位。8字节大小。
分为任务门、中断门和自陷门。CPU对不同的门有不同的处理方式。
段选择符 + 偏移量 = 中断服务子程序的入口地址
4-5字节为访问权限字节,标识该中断描述符是否有效、服务程序的特权级和描述符的类型等信息。
P:描述符的有效性
DPL:描述符特权级
TYPE:描述符类型
9.保护模式下中断描述符表如何得到
在实模式下初始化程序时使用LIDT指令装载IDT,将IDT基址和段限值装入IDTR中。返回实模式时,IDTR自动装入000000H基址和03FFH段限。可见实模式下中断向量表固定存储在最底部,而保护模式下是可以改变的。
10.保护模式下中断门如何得到
IDTR的基址 + 中断号N*8
11.保护模式下如何根据中断门得到中断处理程序地址
中断门中的基址 + 偏移量 = 中断处理程序首地址
12.中断的分类,举例不同类型的中断
1) 从中断源的角度:
内部异常中断:由硬件异常或故障引起的
软中断:程序执行了中断指令引起的中断,由程序员通过INT或INT3指令触发,通常当做trap处理,实现系统调用
外部中断/IO中断:外部设备请求引起的中断(又可分为可屏蔽中断(INTR引脚)和不可屏蔽中断(NMI引脚):重启、电源故障、内存出错等影响整个系统工作的中断时不能被屏蔽的)
2) 以CPU为界:
中断:CPU以外的事件引起的中断(IO中断、时钟中断、控制台中断等)
异常:CPU内部事件或程序执行中的事件引起的过程(除数为0,CPU本身故障、请求系统服务指令)
13.IDT是什么,有什么作用
中断描述符表,存放中断描述符,同时引入一个48位全地址寄存器存放IDT的内存地址,32位基址,16位段限。
理论上可以有8K项,但是80x86只支持256个中断,所以IDT最大只能有256项。
作用:将每一个中断向量与一个中断描述符对应起来。
14.IDT中有几种描述符
三种
中断门描述符
陷阱门描述符
任务门描述符
15.异常的分类
Fault:可被更正的异常,一旦被更正,程序可以不失连续性继续执行,返回地址是产生fault的指令。
Trap:在发生trap的指令执行之后立即被报告的异常,也允许程序不失连续性继续执行,返回地址为产生trap的指令之后的那条指令。
Abort:不总是报告精确异常发生位置的异常,不允许程序继续执行,用来报告严重错误的。
16.用户态和内核态的特权级分别是多少?
3和0
17.中断向量表中,每个中断有几个字节?结构是什么?
4个字节。高二字节=段地址,低二字节=偏移量
18.中断异常的共同点(至少两点),不同点(至少三点)
共同点:都是程序执行过程中的强制性转移,转移到相应的处理程序
都是软件或硬件发生了某种情形而通知处理器的行为。
不同点:
1) 中断是CPU具备的功能,通常因为硬件而随机发生;异常时软件运行过程中的一种开发过程中没有考虑到的程序错误。
2) 中断是CPU暂停当前工作,有计划地去处理其他事情,其发生一般是可预知的,处理过程也是实现制定好的,处理中断时程序是正常运行的;异常是CPU遇到了无法响应的工作,而进入一种非正常状态,异常的出现表明程序有缺陷。
3) 中断是异步的,是来自指令流之外的;异常是同步的,是来自指令流内部的。
4) 中断或异常的返回点。良性如中断和trap,处理程序完了后返回到原指令流的下一条指令;恶性如fault和abort,对于可修复fault,会重新执行该指令,对于不可修复fault或abort,则不会再返回。
5) 中断是由与当前程序无关的中断信号触发的,CPU对中断的响应是被动的,且与CPU模式无关。既可以发生在内核态也可以发生在用户态;异常是由CPU控制单元产生的,大部分异常发生在用户态。