本文主要内容:硬中断 / 软中断的原理和实现

内核版本:2.6.37

Author:zhangskd @ csdn blog

概述

从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。

如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,

跳到中断处理程序的入口点,进行中断处理。

(1) 硬中断

由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包

的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。

(2) 软中断

为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间

就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。

(3) 中断嵌套

Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断

除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。

(4) 软中断指令

int是软中断指令。

中断向量表是中断号和中断处理函数地址的对应表。

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

(5)硬中断和软中断的区别

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

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

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

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

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

开关

(1) 硬中断的开关

简单禁止和激活当前处理器上的本地中断:

local_irq_disable();

local_irq_enable();

保存本地中断系统状态下的禁止和激活:

unsigned long flags;

local_irq_save(flags);

local_irq_restore(flags);

(2) 软中断的开关

禁止下半部,如softirq、tasklet和workqueue等:

local_bh_disable();

local_bh_enable();

需要注意的是,禁止下半部时仍然可以被硬中断抢占。

(3) 判断中断状态

#define in_interrupt() (irq_count()) // 是否处于中断状态(硬中断或软中断)

#define in_irq() (hardirq_count()) // 是否处于硬中断

#define in_softirq() (softirq_count()) // 是否处于软中断

硬中断 / 软中断的原理和实现相关推荐

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

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

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

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

  3. [Linux内核]软中断与硬中断

    转自:http://blog.csdn.net/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author: ...

  4. 硬中断、软中断和信号

    硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...

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

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

  6. 硬中断与软中断的区别!

    硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...

  7. 硬中断与软中断的区别!!!

    硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...

  8. *33.硬中断和软中断是什么?区别?

    1.硬中断-硬件中断.像磁盘,网卡,键盘,时钟等 2.软中断-软件中断.进程产生. 区别:(产生机制.处理顺序.可否屏蔽.中断信号由来) 1.软中断的发生的时间是由程序控制的,硬中断的发生的时间是随机 ...

  9. 软中断和硬中断的区别

    中断: 中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程.即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的 ...

最新文章

  1. 语义分割--Efficient Deep Models for Monocular Road Segmentation
  2. 【机器学习】改善LBP特征提高SVM的可分性的经验总结(一)
  3. java函数实现进制转换与java实现八进制到十进制的转换(百练OJ:2735:八进制到十进制)
  4. 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
  5. 如何将.sof转换成.jic
  6. SpringIOC的依耐注入DI---set注入---constructor有参构造注入---了解P命名空间---了解SpEL
  7. aspen怎么做灵敏度分析_数据分析终极难题:数据分析怎么做才能驱动业务?
  8. jQuery.sap.storage getAccessToken的技术实现
  9. git提交后的自动化流程构建
  10. qiankun 微前端_qiankun 微前端应用实践与部署(二)
  11. 安全使用计算机事例,计算机安全案例分析.ppt
  12. Moto One Pro渲染图曝光:潮流“浴霸”四摄加持
  13. Min(BZOJ 1441)
  14. 《算法图解》第八章之贪婪算法
  15. robo 3t使用教程
  16. 系统运维安全管理办法_7.系统运维安全管理规定
  17. 半功率点为啥是-3dB
  18. C 类IP 地址,连接6 个子公司
  19. 可视化——统计图表介绍
  20. 制作网站及论坛的过程

热门文章

  1. Nginx的安装配置
  2. JNLP(jar包签名)
  3. 《统一沟通-微软-实战》-3-部署-Exchange 2010-4-基本配置
  4. android学习资料
  5. VI常用使用命令 为初次接触VI 的兄弟们献微利
  6. linux shell 脚本嵌套调用 获取脚本自身文件名
  7. python3 设置函数执行超时 eventlet模块
  8. linux shell 特殊变量 符号 $0, $#, $*, $@, $?, $$ 命令行参数
  9. google chrome 谷歌浏览器 快捷键说明
  10. json-schema 简介