分为 7 点 :
1. Linux 对中 断的 扩展 :硬 件中 断, 软件 中 断
2. 中断 处理 原则 1:不 能嵌 套
3. 中断 处理 原则 2:越 快越 好
4. 要处 理的 事情 实在 太 多: 拆分 为: 上半 部 ,下 半部
5. 下半 部的 事情 耗时 不 是太 长: tasklet
6. 下半 部要 做的 事情 太 多并 且很 复杂 :工 作 队列
7. 新技 术: threaded irq
比较 重要 的就 是引 入 了 threaded irq : 使用 内核 线程 来处 理 中
断。 Linux 系统 中有 硬件 中断 ,也 有软 件 中断 。对 硬件 中断 的 处理 有 2
个原 则: 不能 嵌套 , 越快 越好 。
01Linux 对中断的扩展:硬件中断、软件中断
Linux 系统 把中 断的 意义 扩展 了, 对于 按 键中 断等 硬件 产生 的 中
断, 称之 为 “ 硬件 中 断 ”(hard irq) 。 每 个硬 件中 断都 有对 应 的处 理
函数 ,比 如按 键中 断 、网 卡中 断的 处理 函 数肯 定不 一样 。
为方 便理 解, 你 可以 先认 为对 硬件 中 断的 处理 是用 数组 来 实现 的,
数组 里存 放的 是函 数 指针 :
注 意 :上图 是简 化的 , Linux 中 这个 数组 复杂 多了 。当 发生 A 中
断时 ,对 应的 irq_function_A 函数 被调 用。 硬件 导致 该函 数 被调 用。
相对 的, 还可 以人 为 地制 造中 断: 软件 中 断 (soft irq) ,如 下 图所
示:
注 意 :上图是 简化 的 , Linux 中 这个 数组 复杂 多了 。
问题 来了 : a. 软 件 中断 何时 生产 ?由 软 件决 定, 对于 X 号 软 件中 断,
只需 要把 它的 flag 设置 为 1 就表 示发 生 了该 中断 。 b. 软 件 中断 何时
处理 ?
软件 中断 嘛, 并不 是那 么十 万火 急 ,有 空再 处理 它好 了 。什 么时
候有 空? 不能 让它 一 直等 吧? Linux 系统 中, 各种 硬件 中断 频 繁发 生,
至少 定时 器中 断每 10ms 发 生一 次, 那取 个巧 ?在 处理 写硬 件 中断 后,