中断上下文与进程上下文 那么interrupt context A和B的关系又如何呢? 由于可能在interrupt context的某个步骤打开了CPU的IF f1ag标志,这使得在A过程中,B的irq line已经触发了PIC, 进而触发了CPU IRQ pin,使得CPU执行中断B的interrupt context,这是中断上下文的嵌套过程o O通常Linux不对不同的interrupt contexts设置优先级, 这种任意的嵌套是允许的。 当然可能某个实时Linux的patch会不允许低优先级的interrupt context抢占高优先级的interrupt context D进程 current,C进程 B中断 开中断 A中断 A中断发生 B中断发生 4口4四1是42刀00 待香兰(x1 anchenoustc,edu.cn)(计算机应 Linux禄作系统分折Chapter5中断和并常 0 ctober21.20148/f阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断上下文与进程上下文 4. 那么interrupt context A和B的关系又如何呢? 由于可能在interrupt context的某个步骤打开了CPU的IF flag标志,这使得在A过程中,B的irq line已经触发了PIC, 进而触发了CPU IRQ pin,使得CPU执行中断B的interrupt context,这是中断上下文的嵌套过程。 5. 通常Linux不对不同的interrupt contexts设置优先级, 这种任意的嵌套是允许的。 当然可能某个实时Linux的patch会不允许低优先级的interrupt context抢占高优先级的interrupt context D进程 current → C进程 B中断 A中断 A中断发生 开中断 B中断发生 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 8 / 69
Outline 中所信号的作用和处理的一般原则 I/0设备如何引起CPU中断 x86CP如何在硬件级处理中断信 Lx内核中软件级中断处理及其致据结构 Lnux的软中断听、task1et以及下丰部分 需作业 4口4四1是4P刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和并常 0 ctober21,20149/0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 中断信号的作用和处理的一般原则 .2 I/O设备如何引起CPU中断 .3 x86 CPU如何在硬件级处理中断信号 4. Linux内核中软件级中断处理及其数据结构 5. Linux的软中断、tasklet以及下半部分 .6 作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 9 / 69
中断和异常(Intel文档) 。中断分为: o可屏蔽中断(Maskable interrupt) ●I/0设备发出的所有中断请求(IRQ)都可以产生可屏敲中断。 ●可屏敲中断可以处于两种状态: 屏蔽(masked)和非屏蔽(unmasked) 。非屏敲中断(Nonmaskable interrupt,MI) ·只有儿个特定的危急事件才引起非屏敲中断· 。如硬件故障或是掉电 1口4四1是4P在刀0C 陈香兰(x1 anchenoustc,edu.cn)(升算丸应Linux禄作系统分折Chapter5中断和并常 G0 ctober21,201410/6阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断和异常(Intel文档) 中断分为 : 可屏蔽中断(Maskable interrupt) I/O设备发出的所有中断请求(IRQ)都可以产生可屏蔽中断。 可屏蔽中断可以处于两种状态: 屏蔽(masked)和非屏蔽(unmasked) 非屏蔽中断(Nonmaskable interrupt, NMI) 只有几个特定的危急事件才引起非屏蔽中断。 如硬件故障或是掉电 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 10 / 69
中断和异常(Intel文档) ●异常分为: 。处理器探测异常 。由CPU执行指令时探测到一个反常条件时产生, 如溢出、除0错等 。编程异常 。由编程者发出的特定请求产生·通常由it类指令触发 ●通常叫做“软中断” ●例如Linux使用int Ox80来实现系统调用 1口+4四1是4P在刀0C 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和齐常 0 ctober21,201410/阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断和异常(Intel文档) 异常分为: 处理器探测异常 由CPU执行指令时探测到一个反常条件时产生, 如溢出、除0错等 编程异常 由编程者发出的特定请求产生,通常由int类指令触发 通常叫做“软中断” 例如Linux使用int 0x80来实现系统调用 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 10 / 69
中断和异常(Intel文档) ·对于处理器探测异常,根据返回地址(即异常时保存 在内核堆栈中的eip的值)的不同,可以进一步分为: ①故障(fault):eip=引起故障的指令的地址 ●通常可以纠正·处理完异常时·该指令被重新执行 。例如缺页异常 O陷阱(trap):eip=随后要执行的指令的地址。 O异常中止(abort):eip=??? ●发生严重的错误。eip值无效·只有强制终止受影响的进程 1口4四1是4P在刀0C 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux作系统分折chapter5中断和并常 0 ctober21,201410/6阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断和异常(Intel文档) 对于处理器探测异常,根据返回地址(即异常时保存 在内核堆栈中的eip的值)的不同,可以进一步分为: 1. 故障(fault):eip=引起故障的指令的地址 通常可以纠正,处理完异常时,该指令被重新执行 例如缺页异常 2. 陷阱(trap):eip=随后要执行的指令的地址。 3. 异常中止(abort):eip=??? 发生严重的错误。eip值无效,只有强制终止受影响的进程 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 10 / 69