中断机制和中断描述符表、中断和异常的处理

本文主要探讨Linux内核中的中断机制,包括中断描述符表的原理和中断异常的处理流程。内容参考《深入分析linux内核源代码》及其它相关资料,适合想要了解系统编程基础知识的读者。注意,书中分析的是2.4.16版本的内核,部分内容可能不适用于最新内核版本。
摘要由CSDN通过智能技术生成

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同。

此书已经开源,阅读地址 http://www.kerneltravel.net


1、中断向量

Intel x86 系列微机共支持256 种向量中断,为使处理器较容易地识别每种中断源,将 它们从0~255 编号,即赋予一个中断类型码  n ,Intel 把这个8 位的无符号整数叫做一个向 量,因此,也叫中断向量。所有256 种中断可分为两大类: 异常和中断 异常又分为故障(Fault)、 陷阱(Trap)和夭折(Abort) ,它们的共同特点是既不使用中断控制器,又不能被屏蔽。中断又分为外部可 屏蔽中断(INTR)和外部非屏蔽中断(NMI),所有I/O 设备产生的中断请求(IRQ)均引起屏 蔽中断,而紧急的事件(如硬件故障)引起的故障产生非屏蔽中断。

非屏蔽中断的向量和异常的向量是固定的,而屏蔽中断的向量可以通过对中断控制器的 编程来改变。Linux 对256 个向量的分配如下。

• 从0~31 的向量对应于异常和非屏蔽中断。
• 从32~47 的向量(即由I/O 设备引起的中断)分配给屏蔽中断。
• 剩余的从48~255 的向量用来标识 软中断 。Linux 只用了其中的一个(即128 或0x80 向量)用来实现 系统调用 。当用户态下的进程执行一条 int 0x80  汇编指令时,CPU 就切换到 内核态,并开始执行system_call() 内核函数。

2、外设可屏蔽中断、异常及非屏蔽中断

Intel x86 通过两片中断控制器8259A 来响应15 个外中断源,每个8259A 可管理8 个中
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值