操作系统零碎知识点系列之二

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控制单元产生的,大部分异常发生在用户态。


转载于:https://my.oschina.net/JaneL/blog/474892

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值