硬中断 / 软中断的原理和实现
本文主要内容:硬中断 / 软中断的原理和实现
内核版本: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)
一.什么是中断? 在计算机科学中,中断是指由于接收到外围硬件(相对于CPU与内存而言)的异步信号或者来自软件的同步信号而进行相应的硬件/软件处理. 二.什么是硬中断? 显然,外围硬件发给CPU或者内存 ...
- 外部中断和内部中断 硬中断 软中断 中断下半部
重要声明: 以下代码有粘贴 截取他人劳动成果的成分 如有雷同 不胜荣幸 如您不能容忍 请不要独自忍受@weChat:iisssssssssii 联系小民 主动删除 中断含义: { 中断是CPU处理外部 ...
- [Linux内核]软中断与硬中断
转自:http://blog.csdn.net/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author: ...
- 硬中断、软中断和信号
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...
- 【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理
上一篇文章我们模拟操作系统的加载器程序,使用汇编语言实现了一个程序加载器:点击链接查看上一篇文章:程序加载器的实现原理 本篇文章,是实模式学习的结尾.在经过了那么多坎坷,终于学完了8086的实模式!! ...
- 硬中断与软中断的区别!
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...
- 硬中断与软中断的区别!!!
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...
- *33.硬中断和软中断是什么?区别?
1.硬中断-硬件中断.像磁盘,网卡,键盘,时钟等 2.软中断-软件中断.进程产生. 区别:(产生机制.处理顺序.可否屏蔽.中断信号由来) 1.软中断的发生的时间是由程序控制的,硬中断的发生的时间是随机 ...
- 软中断和硬中断的区别
中断: 中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程.即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的 ...
最新文章
- 语义分割--Efficient Deep Models for Monocular Road Segmentation
- 【机器学习】改善LBP特征提高SVM的可分性的经验总结(一)
- java函数实现进制转换与java实现八进制到十进制的转换(百练OJ:2735:八进制到十进制)
- 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
- 如何将.sof转换成.jic
- SpringIOC的依耐注入DI---set注入---constructor有参构造注入---了解P命名空间---了解SpEL
- aspen怎么做灵敏度分析_数据分析终极难题:数据分析怎么做才能驱动业务?
- jQuery.sap.storage getAccessToken的技术实现
- git提交后的自动化流程构建
- qiankun 微前端_qiankun 微前端应用实践与部署(二)
- 安全使用计算机事例,计算机安全案例分析.ppt
- Moto One Pro渲染图曝光:潮流“浴霸”四摄加持
- Min(BZOJ 1441)
- 《算法图解》第八章之贪婪算法
- robo 3t使用教程
- 系统运维安全管理办法_7.系统运维安全管理规定
- 半功率点为啥是-3dB
- C 类IP 地址,连接6 个子公司
- 可视化——统计图表介绍
- 制作网站及论坛的过程
热门文章
- Nginx的安装配置
- JNLP(jar包签名)
- 《统一沟通-微软-实战》-3-部署-Exchange 2010-4-基本配置
- android学习资料
- VI常用使用命令 为初次接触VI 的兄弟们献微利
- linux shell 脚本嵌套调用 获取脚本自身文件名
- python3 设置函数执行超时 eventlet模块
- linux shell 特殊变量 符号 $0, $#, $*, $@, $?, $$ 命令行参数
- google chrome 谷歌浏览器 快捷键说明
- json-schema 简介