Linux:操作系统分析 Chapter5中断和异常 陈香兰(xlanchen@ustc.edu.cn) 计算机应用教研室©计算机学院 嵌入式系统实验室●苏州研究院 中国科学技术大学 Fa112014 October 21,2014 1口t4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和并常 0 ctober21,20141760
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linux操作系统分析 Chapter 5 中断和异常 陈香兰(xlanchen@ustc.edu.cn) 计算机应用教研室@计算机学院 嵌入式系统实验室@苏州研究院 中国科学技术大学 Fall 2014 October 21, 2014 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 1 / 69
Outline 中断信号的作用和处理的一般原则 ② I/0设备如何引起CPU中断 ③x86CPU如何在硬件级处理中断信号 ●中断和异常的硬件处理:进入中断/异常 ●中断和异常的硬件处理:从中断/异常返回 @Linux内核中软件级中断处理及其数据结构 ·初始化中断描述符表 ·低级异常处理 ●低级中断处理 ●Linux体系无关部分的中断管理数据结构 ●do_IRQ的中断处理过程 ⑤Linux的软中断、task1et以及下半部分 o Linux的软中断softirq ●Tasklet ·工作队列和工作线程 作业 4口4四1是4P刀00 东香兰(x1 anchenoustc,edu.cn)(计界丸应 LHux操作系统分折Chapter5中断和齐常 0 ctober21,20142/阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline 1. 中断信号的作用和处理的一般原则 .2 I/O设备如何引起CPU中断 .3 x86 CPU如何在硬件级处理中断信号 中断和异常的硬件处理:进入中断/异常 中断和异常的硬件处理:从中断/异常返回 4. Linux内核中软件级中断处理及其数据结构 初始化中断描述符表 低级异常处理 低级中断处理 Linux体系无关部分的中断管理数据结构 do_IRQ的中断处理过程 5. Linux的软中断、tasklet以及下半部分 Linux的软中断softirq Tasklet 工作队列和工作线程 .6 作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 2 / 69
为什么会有中断? ©内核的一个主要功能就是处理硬件外设I/0 。处理器速度一般比外设快很多 。轮询方式效率不高 ●内核应当处理其它任务,只有当外设莫正完成/准备好了时 才转过来处理外设I0 ●中断机制就是满足上述条件的一种解决办法。 (回忆I0方式:轮询、中断~DMA等) 查看系统中断信息 o cat /proc/interrupts /proc/interrupts: to display every IRQ vector in use by the system 4口4四1是4P刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和并常 0 ctober21,20144/阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 为什么会有中断? 内核的一个主要功能就是处理硬件外设I/O 处理器速度一般比外设快很多 轮询方式效率不高 内核应当处理其它任务,只有当外设真正完成/准备好了时 才转过来处理外设IO 中断机制就是满足上述条件的一种解决办法。 (回忆IO方式:轮询、中断、DMA等) . 查看系统中断信息 . . cat /proc/interrupts /proc/interrupts: to display every IRQ vector in use by the system 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 4 / 69
中断和异常 ●中断(广义)会改变处理器执行指令的顺序,通常与CPU 芯片内部或外部硬件电路产生的电信号相对应 。中断一一异步的:(狭义) 由硬件随机产生,在程序执行的任何时候可能出现 。异常一一同步的: 在(特殊的或出错的)指令执行时由CPU控制单元产生 我们用“中断信号”来通称这两种类型的中断 1口4四是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和并常 0 ctober21.20145/6阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断和异常 中断(广义)会改变处理器执行指令的顺序,通常与CPU 芯片内部或外部硬件电路产生的电信号相对应 中断——异步的:(狭义) 由硬件随机产生,在程序执行的任何时候可能出现 异常——同步的: 在(特殊的或出错的)指令执行时由CPU控制单元产生 我们用“中断信号”来通称这两种类型的中断 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 5 / 69
中断信号的作用 。中断信号提供了一种特殊的方式,使得CPU转去运行正常程序 之外的代码 。比如一个外设采集到一些数据,发出一个中断信号,CPU必须 立刻响应这个信号,否则数据可能丢失 。当一个中断信号到达时,CPU必须停止它当前正在做的事,并 切换到一个新的活动以响应这个中断信号 ·为了做到这这一点, 在进程的内核态堆栈中保存程序计数器的当前值(即eip和cs寄存器) 以便处理完中断的时候能正确返回到中断点,并把与中断信号相关 的一个地址放入进程序计数器,从而进入中断的处理 1口t4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和齐常 0 ctober21.20146/6阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断信号的作用 中断信号提供了一种特殊的方式,使得CPU转去运行正常程序 之外的代码 比如一个外设采集到一些数据,发出一个中断信号,CPU必须 立刻响应这个信号,否则数据可能丢失 当一个中断信号到达时,CPU必须停止它当前正在做的事,并 切换到一个新的活动以响应这个中断信号 为了做到这这一点, 在进程的内核态堆栈中保存程序计数器的当前值(即eip和cs寄存器) 以便处理完中断的时候能正确返回到中断点,并把与中断信号相关 的一个地址放入进程序计数器,从而进入中断的处理 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 6 / 69