中断

发布时间 2023-08-13 08:08:39作者: stu--wy
  • 中断和中断处理
  1. 中断就是由硬件来打断操作系统,内核会随时响应中断。
  2. 中断处理程序就是普通的C函数,不过它们运行在中断上下文中(原子上下文)。中断不能被阻塞,这限制了它们所能做的事情。
  3. 上半部和下半部,中断处理程序是上半部,能够被允许稍后完成的工作会推迟到下半部。例子:网卡接受数据,拷贝最新的数据到内存非常重要,需要在上半部,数据的处理和操作在下半部执行。
  4. 进程上下文可以睡眠,但是中断上下文不可以睡眠,中断上下文的代码应该迅速简洁,尽量把工作从中断中抽离出来放到下半部执行。
  5. 内核提供的接口包括注册和注销中断处理程序,禁止中断,屏蔽中断等
  • 下半部和推后执行的工作
  1. 为什么要工作推后执行以及在什么时候推后执行非常关键,你希望尽量减小中断处理程序需要完成的工作量。
  2. 下半部分可以稍后执行,而且执行期间可以响应中断。
  3. 下半部的实现:软中断,tasklet,工作队列。如果推后执行的任务需要睡眠,那么就选择工作队列,不需要睡眠就选择另外两种。下半部中还相当程度的用到了同步和并发。