中断,信号相关的一些概念

CPU的状态

cpu或cpu的计算核心总是处于以状态之一:

  1. 内核态,运行于进程上下文,内核代表进程运行于内核空间。
  2. 内核态,运行于中断上下文,内核代表硬件运行于内核空间。
  3. 用户态,运行于进程上下文,用户代码运行于用户空间。

中断分类

根据中断来源分类:

  1. 内部中断: 中断源来自CPU内部 (来源:软件中断指令,溢出,触发错误等,例如操作系统从用户态切换到内核态需借助cpu内部的软件中断)
  2. 外部中断: 中断源来自CPU外部,由外设提出请求。

根据中断是否可屏蔽分类:

  1. 可屏蔽中断:可通过中断控制器寄存器等方法屏蔽,屏蔽后,该中断不再得到响应。
  2. 不可屏蔽中断,不能被屏蔽,必须系统掉电。

硬中断,软中断,软件中断,信号

  • 硬中断,软中断:硬中断,是外部设备对cpu的中断,对应的是中断处理的上半部,软中断对应的是中断处理的下半部。
  • 软件中断:比如在涉及系统调用的场合,可以说通过软件中断,陷入内核。软件中断即通过软件指令引发的中断,和上面说的软中断不同,此处的软件中断指software, 上面的软中断指soft。
  • 信号:由内核(或者其他进程)对某个进程的中断。
  • 特别说明:软中断以及基于软中断的tasklet如果在某段时间内大量出现的话,内核会把后继的软中断放入ksoftirqd内核线程中执行。
  • 总的来说:中断优先级>软中断>任何的进程和线程

本文内容源自宋宝华书籍:Linux设备驱动开发详解


shonelau
1 声望0 粉丝

好记性不如烂鼻头