知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

中断与异常详解(一)

发布时间:2015-11-06 16:48:47作者:知识屋

Intel x86共有256种异常或者中断,也就是常说的中断向量,分别有对应的中断类型码,分布如下

0-31

异常和非屏蔽中断

32-47

I/O设备引起的屏蔽中断,书中所讲为8259A单片机来处理响应34号中断外的其他中断

48-255

标识软中断,linux系统只使用了128号即0x80来实现系统内调用,在用户态下执行int 0x80汇编,cpu切换到内核态,执行system_call()函数

对于cpu跑指令的过程中遇到的突发情况分为两大类
 
CPU内部
 
cpu内部出现的问题,必须马上处理,所以叫异常;
 
CPU外部
 
cpu外部出现问题,可以不马上处理,所以采用可屏蔽和不可屏蔽中断的方式来区分。
 
为了管理方便,异常和不可屏蔽中断都当作异常来处理,这类问题有专门的异常处理程序,是linux要解决的问题。
 
0-17号是intel定义异常,除了3,4,5(以及后面的128)号是陷进外(留给系统调用),其他的都是故障,cpu跑不下去了,所以需要处理
18-31号为将来的cpu保留
 
32-47由8259A响应,对应下面的IRQ0-IRQ15,34号中断也就是IRQ2不知道做什么
还有个128号软中断系统调用
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜