中断从外设到内核的DataPath

概念

从物理学的角度看,中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚上。

然后再由中断控制器向处理器发送相应的信号。处理器一经检测到此信号,便中断自己的当前工作转而处理中断。

此后,处理器会通知操作系统已经产生中断,这样,操作系统就可以对这个中断进行适当的处理了。

不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识。因此,来自键盘的中断就有别于来自硬盘的中断,从而使得操作系统能够对中断进行区分,并知道哪个硬件设备产生了哪个中断。这样,操作系统才能给不同的中断提供不同的中断处理程序。

硬中断

由与系统相连的外设(比如网卡、硬盘、键盘)自动产生的。主要是用来通知操作系统外设状态发生了变化。比如,当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。

软中断

为了满足实时系统的需求,中断处理应该越快越好。linux 为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,将那些比较耗时的工作放到中断之后来完成,也就是软中断(softirq)来完成。

中断向量表

中断号中断处理函数地址的对应表。

int 是软中断指令,int n 触发软中断 n。相应的中断处理函数的地址为:中断向量表地址 + 4 * n。

硬中断和软中断的区别

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

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

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

硬中断处理程序要确保它能快速地完成任务,这样程序执行时间才不会等待较长时间,称为上半部

软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部

上半部

硬件中断对应的中断处理程序,就是上半部(top half)。

在理想的情况下,最好是中断处理程序将所有工作都交给下半部分执行,因为我们希望在中断处理程序中完成的工作越少越好(也就是越快越好)。我们希望中断处理程序能够尽可能快地返回。

但是中断处理程序注定要完成一部分工作。例如,中断处理程序几乎都需要通过操作硬件对中断的到达进行确认。有时它还会从硬件拷贝数据。因为这些工作对时间非常敏感,所以只能靠中断处理程序自己去完成。

下半部

剩下的几乎所有其它工作都是下半部执行的目标。

下半部(BH,bottom half)是一个操作系统通用词汇,用于指代中断处理流程中推后执行的那一部分,之所以这样命名是因为它表示中断处理方案一半的第二部分或者下半部。

一些人错误地把所有的下半部机制都叫做“软中断”,真是在自寻烦恼。

当前,有三种机制可以用来实现将工作推后执行:软中断、tasklet 和工作队列。

硬中断、软中断、中断上半部、中断下半部相关推荐

  1. 外部中断和内部中断 硬中断 软中断 中断下半部

    重要声明: 以下代码有粘贴 截取他人劳动成果的成分 如有雷同 不胜荣幸 如您不能容忍 请不要独自忍受@weChat:iisssssssssii 联系小民 主动删除 中断含义: { 中断是CPU处理外部 ...

  2. 硬中断 / 软中断的原理和实现

    本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中 ...

  3. linux中断的上半部和下半部

    原文地址:linux中断的上半部和下半部 作者:td1442911376 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=246 ...

  4. 【Linux开发】linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet...

    linux设备驱动归纳总结(六):3.中断的上半部和下半部--tasklet xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  5. 【Linux驱动编程】Linux中断上半部和下半部

    前言   cpu在执行程序时,如果有外部中断触发时,如定时器中断.串行总线中断等,cpu停止当前任务从而转去响应中断处理.对于中断函数的处理,原则是尽快处理完事务并退出中断,这一点也比较好理解,尽快处 ...

  6. 【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理

    上一篇文章我们模拟操作系统的加载器程序,使用汇编语言实现了一个程序加载器:点击链接查看上一篇文章:程序加载器的实现原理 本篇文章,是实模式学习的结尾.在经过了那么多坎坷,终于学完了8086的实模式!! ...

  7. 计算机中断/硬中断/软中断之理解(1)

    一.什么是中断? 在计算机科学中,中断是指由于接收到外围硬件(相对于CPU与内存而言)的异步信号或者来自软件的同步信号而进行相应的硬件/软件处理. 二.什么是硬中断? 显然,外围硬件发给CPU或者内存 ...

  8. 认真聊聊中断(软中断)

    文章目录 软中断与硬中断很像 软中断的守护进程 注册软中断向量表 触发一次软中断 总结 前面认认真真聊聊中断,其实讲的都是硬中断,注意是硬中断不是硬件中断哦,硬中断的概念更大. 硬中断包括中断.异常以 ...

  9. STM32CubeMX系列教程8:配置工程模板(串口+不定长数据收发+DMA+IDLE中断+软中断)

    文章目录 摘要 生成工程 配置外设 1.配置时钟与Debug 2.配置串口与DMA 3.配置定时器与中断 配置时钟树 配置工程设置 点击`GENERATE CODE`生成工程 修改源码 配置软中断 配 ...

  10. linux 不可中断的进程,不可中断进程和僵尸进程

    什么是不可中断状态 当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态.从 ps 或者 top 命令的输出中,可以发现它们都处于 D 状态,也就是不可中断状态 (Uni ...

最新文章

  1. LVS的DR模式配置
  2. 小程序onload_小程序生命周期-基础篇
  3. SAP UI5故障排查 - why I cannot get my select control via byId
  4. LeetCode 1750. 删除字符串两端相同字符后的最短长度(双指针)
  5. Kali Linux学习入门-更换源及强制更新
  6. 嵌入式系统——曼彻斯特编码
  7. Day11名称空间,作用域,闭包函数
  8. 见贤思齐,正式开启源码之旅
  9. 顺序输出一个整数的各位数字
  10. 小牛电动车能跑多快、多远?一起来了解一下
  11. Comparing JSON and XML? Stop it!
  12. 计算机硬盘中病毒吗,硬盘中病毒能格式化吗
  13. Java之网络编程(三)TCP
  14. SpringMVC 学谈 (第四章)
  15. 虚拟独享服务器,独享云虚拟主机和服务器
  16. PLS-00103: 出现符号 在需要下列之一时 ( ; is with oracle利用存储过程设计定时器的问题
  17. 最经典的黑客技术入门知识大全
  18. Praat:强大的语音处理工具。
  19. linux的qt中出现error2,Windows下Qt代码出现的错误总结
  20. 比你优秀的人都在努力

热门文章

  1. 最大子段和(C++)
  2. 类名.class 类名.this 详解
  3. idea-代码格式化快捷键设置
  4. vue中如何引入jquery详解
  5. python中文居中对齐处理
  6. 音视频开发(三十四):天空盒的实现原理
  7. 逆波兰式的转换与计算(简单)
  8. ITK (1)窗宽窗位的意义与设置
  9. Python的namedtuple使用详解
  10. Anaconda安装之后Spyder闪退解决办法