linux 中断简介

1. 中断简介

中断

什么是中断,中断是指处理器接收到来自硬体或软体的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。

中断分类

  • 同步中断和异常(软件中断)

cpu自身产生,针对当前执行的程序。当cpu执行到一个由于编程失误而导致的错误指令(除0)或在执行期间发生特殊情况时(缺页),导致cpu不知道如何处理,这时候就会产生异常,请求内核来告诉它该如何处理。

  • 异步中断(硬件中断)

异步中断是由外设产生的,可能发生在任意时间。异步中断并不与特定进程关联。例如网卡通过发出一个相关中断通知cpu新分组的到达。

2. 中断处理

当中断来临时,cpu需要去处理这些情况。如果cpu当前不处于内核态,就会发起从用户态到内核态的转换,紧接着,在内核执行一个专门的例程,成为中断服务例程(interupt service routine,ISR)或中断处理程序(interupt handleer)。
中断的处理分为三部分:

  • 准备中断处理程序执行环境。包括用户态转换到内核态,保存用户程序当前的寄存器状态。

  • 执行中断处理程序

  • 恢复到中断之前的状态。包括调度和信号投递检查,确认了这两个问题后,才还原寄存器集合,切换为用户栈,执行中断前的程序。

总结

本文介绍了中断的概念以及中断的处理过程,由此可以建立一个对中断的宏观上的认识,了解中断是什么以及怎么处理的。

猜你喜欢

转载自www.cnblogs.com/ZhaoKevin/p/12464616.html