LINUX中断机制与信号

linux中断--LINUX中断机制与信号 在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。 LINUX中断机制与信号 中断和异常   l 中 断(也称硬件中断) 定义:中断是由其他硬件设备依照CPU时钟周期信号随机产生的。 分类: 可屏蔽中断 非可 阅读详情

中断和异常

 

l  中 断(也称硬件中断)

定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。

分类 :可屏蔽中断/非可屏蔽中断

来源: 间隔定时器和I/O

 

l  异 常(也称软件中断)

定义 :当指令执行时由 CPU控制单元 产生的,异常也称为“异步中断”是因为只有在 一条指令终止执行后CPU 才会发出中断。

分类 : 处理器探测到的异常

²  故障

²  陷阱

²  异常终止

编程异常( 也称软中断 )

²  int指令

来源: 程序的错误产生的

内核必须处理的异常( 例如:缺页和内核服务的请求 -int)

异常处理

l  当发生异常时,CPU 控制单元产生一个硬件出错码。

l  CPU根据该中断吗找到中断向量表内的对应向量,根据该向量转到中断处理程序。

l  中断处理程序处理完之后向当前进程发送一个SIG*** 信号。

l  若进程定义了相应的信号处理程序则转移到相应的程序执行,若没有,则执行内核定义的操作。

中断处理

l  设备产生中断

l  PIC(可编程中断控制器)会产生一个对应的中断向量

l  和中断向量表中的每一个中断向量进行比较,转到对应的中断处理程序

l  中断处理程序进行保存现场,做相关处理,恢复现场

l  内核调度,返回用户进程

 

 

硬件中断的上半部和下半部及实现方式

l  硬件中断的分类

²  紧急的 —— 这类中断必须立即执行

²  非紧急的 —— 也必须立即执行

²  非紧急可延迟的 —— 上半部立即执行,下半部延迟执行

 

硬件中断任务(处理程序)是一个快速、异步、简单地对硬件做出迅速响应并在最短时间内完成必要操作的中断处理程序。硬中断处理程序可以抢占内核任务并且执 行时还会屏蔽同级中断或其它中断,因此中断处理必须要快、不能阻塞。这样一来对于一些要求处理过程比较复杂的任务就不合适在中断任务中一次处理。比如,网卡接收数据的过程中, 首先网卡发送中断信号告诉 CPU 来取数据,然后系统从网卡中读取数据存入系统缓冲区中,再下来解析数据然后送入应用层。这些如果都让中断处理程序来处理显然过程太长,造成新来的中断丢失。因此 Linux 开发人员将这种任务分割为两个部分,一个叫上底,即中断处理程序,短平快地处理与硬 件相关的操作(如从网卡读数据到系统缓存);而把对时间要求相对宽松的任务(如解析数据的工作)放在另一个部分执行,这个部分就是我们这里要讲的下半底。 

下半底是一种推后执行任务,它将某些不那么紧迫的任务推迟到系统更方便的时刻运行。因为并不是非常紧急,通常还是比较耗时的, 因此由系统自行安排运行时机,不在中断服务上下文中执行 。内核中实现 下半底的手段经过不断演化,目前已经从最原始的BH(bottom thalf) 演生出 BH 、 任务队列(Task queues ) 、 软中断(Softirq ) 、 Tasklet 、 工作队列(Work queues ) (2.6 内核中新出现的)。

 

 

其中的软中断和异常中提到的软中断的区别:

主要是用来处理非紧急可延迟的硬件中断

Linux系统定定义的,不是用户定义,并且个数有限

 

 

关于软中断和硬中断的其它解析:

软中断一般是指由指令int 引起的 “ 伪 ” 中断动作 —— 给 CPU 制造一个中断的假象;而硬中断则是实实在在由 8259 的连线触发的中断。因此,严格的 讲, int 与 IRQ 毫无关系,但二者均与中断向量有关系。 int 引起的中断, CPU 是从指令中取得中断向量号;而 IRQ 引起的中断, CPU 必须从数据线上取回中断号,接下来 CPU 的工作就一样了:保护现场、根据中断号得到中断处理程序地址、执行中断处理、恢复现场继续执行被中断的指令。

 

在软中断和硬中断之间的区别是什么? 
①硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信 号,因此中断的发生不是随机的而是由程序安排好的。 
②硬中断的中断响应周期, CPU 需要发中断回合信号( NMI 不需要),软中断的中断响应周 期, CPU 不需发中断回合信号。 
③硬中断的中断号是由中断控制器提供的( NMI 硬中断中断号系统指定为 02H );软中断的中断号由指令直接给出, 无需使用中断控制器。 
④硬中断是可屏蔽的( NMI 硬中断不可屏蔽),软中断不可屏蔽。

 

LINUX信号机制

l  信号本质

信号是 异步的进程间通讯机制 ,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知 道信号到底什么时候到达。 
信号是进程间通信机制中 唯一的异步通信机制, 可以看作是异步通知,通知接收信号的进程有哪些事情发生了。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给 该进程传递任何数据。

l  产生信号的条件主要有:

1.  用户在终端 按下某些键时,终端驱动程序会发送信号给前台进程,例如Ctrl-C 产生 SIGINT 信 号, Ctrl-/ 产生 SIGQUIT 信号, Ctrl-Z 产生SIGTSTP 信号。

2.  硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的信号。例如当前进程执行了 除以0 的指令, CPU 的运算单元会产生异常,内核将这个异常解释为 SIGFPE 信号发送给进 程。再比如当前进程访问了非法内存地址,, MMU 会产生异常,内核将这个异常解释为 SIGSEGV 信 号发送给进程。

3.  一个进程调用kill(2) 函数可以发送信 号给另一个进程。

4.  可以用kill(1) 命令发送信号给某个 进程, kill(1) 命令也是调用 kill(2) 函 数实现的,如果不明确指定信号则发送 SIGTERM 信号,该信号的默认处理动作是终止进程。

5.  当 内核检测到某种软件条件发生时也可以通过信号通知进程,例如闹钟超时产生SIGALRM 信 号,向读端已关闭的管道写数据时产生 SIGPIPE 信号。

l  进程对信号的处理:

1.  忽略此信号。

2.  执行该信号的默认处 理动作。

3.  提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函 数,这种方式称为捕捉(Catch ) 一个信号。

l  信号与中断的相似点: 
(1 )采用了相同的异步通信方式; 
(2 )当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序; 
(3 )都在处理完毕后返回到原来的断点; 
(4 )对信号或中断都可进行屏蔽。

l  信号与中断的区别: 
(1 )中断有优先级,而信号没有优先级,所有的信号都是平等的; 
(2 )信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行; 
(3 )中断响应是及时的,而信号响应通常都有较大的时间延迟。

l  信号机制具有以下三方面的功能: 
(1 )发送信号。发送信号的程序用系统调用 kill( ) 实现; 
(2 )预置对信号的处理方式。接收信号的程序用 signal( ) 来实现对处理方式的预置; 
(3 )收受信号的进程按事先的规定完成对相应事件的处理。

l  信号捕获过程

 

 

本图出自ULK

注:从上图可以看出,信号的处理时机是在当前进程由于系统调用、中断或者异常而进 入系统空间以后,从系统空间返回到用户空间前夕(这样做主要是出于效率的考虑,和 进程的调用时机一致, 从系统调用返回意味着要离开内核态而返回到用户态,而状态的 转换要花费一定的时间,因此,在返回到用户态前,系统把在内核态该处理的事全部做 完 )。

  • 下图为异常和函数产生信号的方式以及进程的处理过程 

 


 

Linux系统编程(信号处理机制) 本篇文章我们来讲解信号的处理机制,信号处理在Linux操作系统中必不可少,这一点值得大家注意,信号又会与中断,异常一起讨论,那么下面我们就来看看到底什么是信号吧。本篇文章就讲解到这里,大家看完后可以好好实验一下。 阅读详情

相关推荐

从零开始:使用Mask2Former训练你的专属图像分割数据集

本文详细介绍了如何使用Mask2Former训练自定义图像分割数据集,从环境配置、数据集准备到模型训练与优化。通过实战技巧和问题排查指南,帮助开发者高效完成从零开始的图像分割任务,特别适合需要处理自定义数据集的AI研究人员和工程师。

weixin_30566063的博客 645

windows和Linux中断机制区别,LINUX中断机制与信号

LINUX中断机制与信号在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。LINUX中断机制与信号中断和异常l中断(也称硬件中断)定义:中断是由其他硬件设备依照CPU时钟周期信号随机产生的。分类:可屏蔽中断非可屏蔽中断来源:间隔定时器和I/O...

weixin_42494902的博客 528

基于R语言的现代贝叶斯统计学方法(贝叶斯参数估计、贝叶斯回归、贝叶斯计算)实践

贝叶斯统计学是一门基本思想与传统基于频率思想的统计学完全不同的统计学方法;它以其灵活性和先进性在现代的统计学中占据着重要的地位。贝叶斯统计学是开展科学研究不可缺少的重要手段,但是,因为其思想、技术和方法都与传统统计学有着较大区别;且其计算中涉及马尔科夫、蒙特卡罗和吉布斯采样等现代计算方法,对使用者经验和能力构成了很大的挑战。

AAIshangyanxiu的博客 681

Linux编程复习(3)——信号与中断

信号是响应某些状况而产生的事件,进程在接收到信号时会采取相应的行动。某些状况就是指某些条件错误,如内存段冲突、浮点处理器错误或者非法指令等。信号是在软件层次上对中断的一种模拟,所以信号也称为是软中断 信号与中断的相似点: 1,都采用相同的额异步通信方式 2,当检测出有信号或中断请求时,都暂停证在执行的程序而转去执行相应的处理程序 3,都在处理完毕之后返回到原来的断点 4,对信号或中断都可进行屏蔽 信号与中断的区别: 1,中断有优先级,而信号没有,所有的信号都是平等的 2,信号处理程序是在用户态下运行的,而中

qq_37299596的博客 686

[Linux项目实践] LCD Panel的硬件分析及调试

LCD硬件分析 项目使用3.5” TFT-LCD并且支持触摸控制。LCD的硬件可从几个方面学习:1)查看LCD的硬件连线。2)查看数据手册了解寄存器的控制。3)查看LCD DATASHEET了解硬件操作 1)LCD硬件连线 在图中有33个引脚,22根数据引脚和9根控制引脚。 LCD的工作原理:像素点是从左至右,从上至下逐个显示,LCD控制寄存器会从从内存中的framebuffer通

Terry_Yuan的技术专栏 3024

把 SAP Query 用到极致:ABAP Query 的核心概念、配置流程、权限与运输治理全解析

摘要:SAP Query 是一款面向业务用户的自助报表工具,可解决标准报表无法满足业务需求的问题。其核心由四大组件构成:Queries(报表定义)、InfoSets(数据视图)、User Groups(权限分组)和Translation(多语言支持)。通过SQ03、SQ02、SQ01事务码分步创建用户组、数据视图和查询,业务用户无需ABAP知识即可生成Basic List(明细)、Statistics(统计)和Ranked List(排名)三种报表形式。典型案例展示了如何为采购部门设计包含明细追溯和Top1

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 182

Linux信号基础(1)——软件也能实现中断?

参数 sa_mask 定义了一组信号,当进程在执行由 sa_handler 所定义的信号处理函数之前,会先将这组信号添加到进程的信号掩码字段中,当进程执行完处理函数之后再恢复信号掩码,将这组信号从信号掩码字段中删除。并且每一个信号都有其对应的名字(其实就是一个宏), 信号名字与信号编号乃是一一对应关系,但是由于每个信号的实际编号随着系统的不同可能会不一样,所以在程序当中一般都使用信号的符号名(也就是宏定义)。大多数情况下,是无法预测信号达到的准确时间,所以,信号提供了一种处理异步事件的方法。

cj_lsk的博客 367

【GameFramework框架内置模块】15、场景(Scene)

场景(Scene)模块,提供场景管理的功能,负责场景的加载、卸载、切换和管理。可以方便地管理不同场景之间的切换以及不同场景之间的信息传递。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1888

Linux进程信号——中断机制下信号处理

这篇文章深入探讨了Linux系统信号处理机制和操作系统运行本质。主要内容包括: 信号处理流程 信号递达的三种方式:默认动作、自定义动作和忽略 信号处理时机:在从内核态返回用户态时进行检查和处理 信号捕捉过程涉及4次身份切换(用户态⇄内核态) 操作系统运行本质 基于中断机制工作,本质是一个死循环 通过时钟中断实现进程调度 硬件中断处理流程:外设→中断控制器→CPU→操作系统 中断向量表(IDT)将中断号映射到处理方法 关键机制 进程时间片调度原理 用户态/内核态切换的实现方式 硬件中断与信号处理的关系 文章通

2301_79705195的博客 1137

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

基于 Qt C++ 开发一套西门子量子测量系统的控制与数据采集平台

sensorIdCombo->addItems({"QTS-100-001 (温度)", "QPG-200-001 (压力)", "QDS-300-001 (位移)"});precisionTable->setHorizontalHeaderLabels({"传感器ID", "类型", "标称精度", "实际精度", "校准状态"});QWidget *dispWidget = createSensorWidget("量子位移", "mm (±1μm)", 50.0, 0.001);// 传感器状态更新。

寒寒豆豆软件公司的博客 255

LINUX中断机制与信号(http://linux.chinaitlab.com/soft/878170.html)

LINUX中断机制与信号 中断和异常     中 断(也称硬件中断)     定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。     分类 : 可屏蔽中断     非可屏蔽中断     来源: 间隔定时器和I/O     异 常(也称软件中断)     定义 :当指令执行时由 CPU控制单元 产生的,异常也称为“异步中断”是因为只有在 一条指令终止执行后CPU 才会

liu09110003420的专栏 1157

Hadoop在大数据领域的电商数据分析案例

随着电商行业的迅猛发展,每天都会产生海量的数据,如用户浏览记录、购买行为、商品信息等。如何从这些数据中提取有价值的信息,为电商企业的决策提供支持,成为了电商企业面临的重要问题。Hadoop作为一个开源的分布式计算平台,具有高可靠性、高扩展性和高效性等特点,能够很好地处理大数据。本文的目的就是通过实际案例,详细介绍Hadoop在电商数据分析中的应用,范围涵盖了从数据采集、存储到分析的整个流程。本文首先介绍背景信息,让读者了解Hadoop在电商数据分析中的重要性和应用场景。

Java大师兄的博客 1179

Linux信号补充:捕捉流程与中断机制揭秘

文章摘要: 本文深入解析Linux信号捕捉机制,揭示信号处理发生在内核态返回用户态前夕的关键细节。通过分析硬件中断(如时钟中断)、异常和系统调用如何触发内核态切换,阐明信号检查与处理的完整流程。重点探讨了时钟中断如何确保信号及时响应,即使程序处于死循环也能被Ctrl+C终止。文章还对比了硬件中断与软中断(如系统调用)的差异,最终串联起信号处理的全链路逻辑,帮助读者理解Linux信号机制的底层原理与实现方式。

2501_91839423的博客 859

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LINUX中断机制与信号(http://blog.youkuaiyun.com/lichaoandy/article/details/5543713)

在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。 LINUX中断机制与信号 中断和异常   l  中 断(也称硬件中断) 定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。 分类 : 可屏蔽

liu09110003420的专栏 816

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Linux系统(信号篇):信号的产生

在 Linux 系统中,信号(Signal)是一种软件中断机制,用于在进程间传递异步事件通知。它类似于硬件中断,但由软件层面实现,可用于通知进程某个事件已经发生,进程可根据预设规则响应或忽略这些信号。在操作系统中,信号的软件条件指的是由软件内部状态或特定软件操作触发的信号产生机制。这些条 件包括但不限于定时器超时(如alarm函数设定的时间到达)、软件异常(如向已关闭的管道写数据 产生的SIGPIPE信号)等。当这些软件条件满足时,操作系统会向相关进程发送相应的信号,以通知进程进行相应的处理。

yue_2899799318的博客 1353

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

CSAPP 信号 signal

linux下信号机制

good_jiojio的博客 357

Linux进程信号

/执行的程序叫做前台进程,它就是目标进程且必须只有一个,键盘等设备只有一个要确定是给确定的进程,前台进程的本质就是要从键盘获取数据的。./ &执行的叫做后台进程,它无法从标准输入种获取内容,但可以向标准输出打印。在一个父子进程中,父进程先退了,子进程就变成了孤儿进程会被操作系统回收在后台。jobs可以查看所有的后台任务,fg 任务号,把这个进程提为前台进程。ctrl+z:把进程切换到后台,bg 任务号,让后台进程恢复运行。

qq_75271671的博客 1209
上一篇: Linux中断机制
下一篇: struct sk_buff详解
小飞鱼hubble
博客等级 码龄15年 14粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值