内核学习——5、中断

硬中断:

是一个异步信号,或需要改变执行一个同步事件

外设产生,基于IRQ,CPU将相应请求给到硬件驱动处理事务

处理中断的驱动需要运行在CPU上的,中断产生时,CPU停止当前程序去处理中断请求,一个IRQ中断一个CPU

软中断:

类似硬中断,但软中断仅仅由当前运行的进程产生

通常软中断是对于写IO的请求

软中断不会直接中断CPU,只有当前运行的进程才会产生软中断,软中断是一种需要内核为正在运行的进程去做一些事情(通常为IO)的请求

区别:

硬中断由外设引发,软中断是执行中断指令产生

硬中断的中断号是由中断控制器提供,软中断的中断号是由指令直接指出,无需中断控制器

硬件中断是可屏蔽的,软中断不可屏蔽

硬中断处理程序要确保它能快速完成任务,称为上半部

软中断处理硬中断未完成的工作,属于下半部

处理方式:硬中断是由CPU直接中断正在运行的程序,去处理中断源的请求;软中断需要将CPU的控制权转移到中断处理程序或其他特定的指令,待其处理完毕之后,再继续被打断的程序

来源:硬件中断通常来自外设请求,软中断通常来自操作系统的输入输出软件或者用户程序的错误

系统响应:硬中断是强制性的,CPU不管当前程序有多关键,都必须暂停去执行IRQ;软中断时系统会先把原先运行的程序执行完毕,再执行中断处理程序

  • 1、smp系统中,中断发给哪个CPU由GIC中断控制器的GICD_ITARGETSRs寄存器设置,每8bit设置一个中断的目标CPU,bit0代表CPU0,以此类推;对应的bit为0时,表示不可发送给对应的CPU,为1时,表示可发送给对应的CPU
  • 2、中断执行过程如下:
    发生中断------》CPU关中断------》执行中断上半部分------》CPU开中断------》执行softirq或者tasklet、workqueue等下半部分------》CPU关中断------》中断退出同时打开CPU中断------》中断处理线程、软中断处理线程、工作队列
  • 3、中断上下文不能睡眠,因为中断上半部是在CPU关中断下执行的,若是睡眠,则永远无法被唤醒,CPU再也不响应中断,导致系统不能正常工作
  • 4、中断处理线程、软中断处理线程、工作队列,都执行在进程上下文,可以睡眠
  • 5、软中断的回调函数执行过程中可以响应本地中断,因为它在开中断情况下执行
  • 6、同一种软中断softirq的处理函数可以在多个处理器上同时执行,处理函数必须可以重入,需要使用锁保护临界区;
    同一个小任务tasklet同一时刻只能在同一个处理器上执行,不需要重入
相关推荐
点云SLAM15 分钟前
Advantageous 英文单词学习
学习·英文单词学习·雅思备考·advantageous·有利的 / 占优势的·有益的 / 有帮助的
悠哉悠哉愿意15 分钟前
【EDA学习笔记】电子技术基础知识:读懂与画好原理图
笔记·单片机·嵌入式硬件·学习·eda
q行15 分钟前
MySQL学习日志--DQL和它的七大字句
数据库·学习·mysql
YJlio16 分钟前
文件工具学习笔记(12.7):Sysinternals 文件工具实战总览与排障闭环
笔记·学习·计算机外设
L.fountain17 分钟前
图像自回归生成(Auto-regressive image generation)实战学习(三)
人工智能·深度学习·学习·回归
有谁看见我的剑了?18 分钟前
ESXI 虚拟机文件组成学习
运维·学习·云计算
代码游侠22 分钟前
应用——UDP 网络编程
linux·运维·开发语言·学习·算法
DeeplyMind38 分钟前
AMD KFD的BO设计分析系列7-2:GPU GART 实现深度解析--绑定机制与性能优化
驱动开发·amdgpu·kfd·gart
我命由我1234544 分钟前
JavaScript WebGL - WebGL 引入(获取绘图上下文、获取最大支持纹理尺寸)
开发语言·前端·javascript·学习·ecmascript·学习方法·webgl
程序猿零零漆1 小时前
Spring之旅 - 记录学习 Spring 框架的过程和经验(一)BeanFactory和ApplicationContext入门和关系
java·学习·spring