首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

中断实时

中断实时 翻译自:Software interrupts and realtime Linux内核的软中断("softirq")机制有些奇怪,在早期的Linux和处理机制下比较晦涩,且仅有极少的内核开发人员会直接接触软中断...在很早以前,Linux存在32个硬中断向量,并为每个向量分配一个设备驱动或相关的任务。...实时补丁集的性质使得用户对主线内核的缺陷感到痛苦,这导致来自实时社区的大量主线代码修改和提升。目前,实时用户已经有了一个改进的软中断机制,使其不必再进行底层调优。...TIPS: linux中断按照等级分为了top half和buttom half,在执行top half的时候是关中断的,而在执行buttom half的时候是开中断的(此时可以再次处理中断) softirq...参考: Linux中断 - softirq

2K20

系统中断实时测试方法

系统中断实时测试方法 1.概述 对于嵌入式系统来说,中断的响应时间在时序要求非常严格的情况下十分的重要,所以必须要能够找到中断测试的方法。本文主要介绍两种常用中断测试方法的理论。...2.中断做了什么? 如果需要测试中断响应时间,那么必须要理解为什么会有中断响应时间,以及到底测试的是什么数据?...对于处理器来说,当设置了外部中断,从理论上分析,应该系统会从立即正常运行程序的状态转到中断处理程序的状态,从而调用中断处理函数去执行具体的中断程序。...然后跳转到具体的中断处理函数中。中断处理完成后则恢复现场,也就是将栈内存中的数据又写回寄存器中。此时又可以从打断的地方开始执行了,这就是一个中断处理过程的基本流程。 而系统的中断响应时间指的是什么?...4.小结 从测量芯片的中断响应时间上,具体的硬件可能会有一些差异,有些芯片可以之间通过中断向量找到中断产生的原因,而有些中断处理则是统一入口处理,然后通过读取寄存器来判定异常或者中断产生的原因,这样的中断处理效率也会下降

2K40
您找到你想要的搜索结果了吗?
是的
没有找到

实时迷思(3)——80%时间屏蔽了中断实时还有救么?

今天我们继续来借助实时模型来研究一个看似铁板钉钉的问题: 当应用在运行时有大比例的时间屏蔽了中断,系统的实时还有救么? 当应该频繁的开关中断,系统的实时还有救么?...这符合本文一开头所提出的两个问题的条件,即:大比例的时间屏蔽了中断 和 频繁的开关中断。 【是时候搬出模型了……】 ---- 那么,在这个例子中,实时会受到怎样的影响呢?...套用到屏蔽中断实时的影响上来说: 推论1: ---- 屏蔽中断并不可怕,哪怕积累下来的时间占比很大,只要每次屏蔽的时间足够短,就能有效的减小对系统实时的影响——换句话说,高频率的开关中断很可能还是有益实时的...---- 推论2: ---- 如果系统中存多个对实时响应的屏蔽(比如裸机中的屏蔽中断、RTOS中的关闭调度),根据木桶原理,只以单次屏蔽时间最长的那个来评估对系统实时的影响。...---- 【问出正确的问题】 ---- 文章的开始部分,我们提出了两个问题: 当应用在运行时有大比例的时间屏蔽了中断,系统的实时还有救么? 当应该频繁的开关中断,系统的实时还有救么?

63020

记一个实时Linux中断线程化问题

背景 有一个项目对实时性要求比较高,于是在linux内核上打了RT_PREEMPT补丁。 最终碰到的一个问题是,芯片本身性能不强,CPU资源不足,急需优化。...中断线程化回顾 让我们来回顾下中断线程化的知识。 在Linux上,中断的优先级比进程高,一旦中断过来普通进程实时进程通通都要让路,让CPU先运行对应的中断处理程序,这就会对实时造成很大的影响。...为了解决这个由中断带来的实时性问题,或者说由不确定运行时长的中断服务程序带来的实时性问题,RT_PREEMPT补丁引入了中断线程化的机制。...中断线程化之后,中断来了虽然还是会打断实时进程,但所执行的操作只是唤醒中断线程,原本的中断服务程序被放到了一个内核线程中,延迟执行。...1.这个中断服务程序非常简单,没必要线程化。强行线程化对实时的改善不大,反而会带来不必要的开销。 2.这个中断服务程序非常关键,其中采集的数据的实时也非常重要,不应该被延迟执行。

2.1K10

linux实现实时同步服务

sersync-master/ [root@webserver sersync-master]# tar -xvzf sersync2.5.4_64bit_binary_stable_final.tar.gz GNU-Linux-x86.../ GNU-Linux-x86/sersync2 GNU-Linux-x86/confxml.xml [root@webserver sersync-master]# mkdir/usr/local/sersync...[root@webserver sersync-master]# mv GNU-Linux-x86/* /usr/local/sersync/ [root@webserver sersync-master...[1] 13151 [root@webserver sersync]# 命令详解: -r:在监控前将需要备份的目录里面的内容推送到备份目录中,确保数据的统一 -d:以守护进程运行 -o:指定sersync...的配置文件 $:最后一个&试讲sersync进程放到后台进行 3.4、查看和验证实时同步 image.png image.png  上面两个图可以看出两台服务器备份内容已经一致,接下来看是否能实时同步

1.2K30

Linux中断处理

中断处理 - 上半部(硬中断) 由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux中断的处理过程。...中断处理 - 下半部(软中断) 由于中断处理一般在关闭中断的情况下执行,所以中断处理不能太耗时,否则后续发生的中断就不能实时地被处理。...鉴于这个原因,Linux中断处理分为两个部分,上半部 和 下半部,上半部 在前面已经介绍过,接下来就介绍一下 下半部 的执行。...softirq机制 中断下半部 由 softirq(软中断) 机制来实现的,在Linux内核中,有一个名为 softirq_vec 的数组,如下: static struct softirq_action...在Linux内核中有两种tasklet,一种是高优先级tasklet,一种是普通tasklet。

6.6K20

Linux中断 - IDT

[toc] 如何设置IDT IDT 中断描述符表定义 中断描述符表简单来说说是定义了发生中断/异常时,CPU按这张表中定义的行为来处理对应的中断/异常。...中断描述符项定义 当中断发生,cpu获取到中断向量后,查找IDT中断描述符表得到相应的中断描述符,再根据中断描述符记录的信息来作权限判断,运行级别转换,最终调用相应的中断处理程序; 这里涉及到Linux...pre-cpu的中断栈,还是使用IST的中断栈; type表示所中断是何种类型,目前有以下四种: enum { GATE_INTERRUPT = 0xE, //中断门 GATE_TRAP...传统系统调用相关 IDT 的设置 Linux系统启动过程中内核压解后最终都调用到start_kernel, 在这里会调用trap_init, 然后又会调用idt_setup_traps: void...硬件中断相关IDT的初始化也是在Linux启动时完成,在start_kernel中通过调用init_IRQ完成,我们来看一下: void __init init_IRQ(void) { int

6.5K10

Linux 中断处理浅析

最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想....在进入中断服务程序时, CPU已经自动禁止了本CPU上的中断响应, 因为CPU不能假定中断服务程序是可重入的. 中断处理程序的第一步要做两件事情: 1....将中断号压入栈中; (不同中断号的中断对应不同的中断服务程序入口) 2....据说在montavista(一种嵌入式实时linux)中, 将内核的中断机制做了修改. (某些中断的)中断处理过程被赋予了task结构, 能够被内核调度. 解决了上述两个问题....(montavista的目标是实时, 这样的做法牺牲了一定的整体性能.) 工作队列 linux基线版本的内核在解决上述问题上, 提供了workqueue机制.

7.3K80

linux 中断机制《Rice linux 学习笔记》

这篇文章以按键为例子讲解linux中断原理,中断的架构,中断的实现。 在我们的开发中,检测按键是否触发,无非就两种方法—轮询和中断。作者认为两种方法最大的区别就是CPU的利用率。...Linux中断原理: 中断:处理器异常的一种,它是一种特殊的电信号,用硬件发给处理器,处理器接收到中断后,会马上向操作系统反映此信号的到来,然后就由操作系统负责处理这些新到来的数据。...中断服务程序:相应特定中断时,内核会执行的函数。其中:1、中断处理程序是被内核调用来响应中断的。2、而它们运行于我们称之为中断上下文的特殊上下文中。...Linux中断的相关函数: 1、注册中断函数: 中断处理函数结构: typedef irqreturn_t (*irq_handler_t)(int, void*); 注册中断函数:int request_irq...Linux中断实现: 这里例子采用等待队列的方式实现(也就是上述的第二种方法)。

4.7K10

linux内核缺页中断处理

MMU可以做虚拟地址到物理地址的转换,使用MMU我们就可以使用更多的内存空间,因为程序具有局部原理,我们可以将暂时用不到的数据存放到磁盘,当访问到时会发生缺页中断,从磁盘中将所需要的数据加载到内存。...9.调度引发缺页中断的进程,操作系统返回调用他的汇编例程 10.该例程恢复寄存器和其他状态信息,返回到用户空间继续执行,就好像缺页中断没有发生过。...linux内核对缺页异常的处理流程很复杂,但是基本思想和上述流程差不多。...下面看linux的基本处理流程: 内核处理缺页异常的主函数就是do_page_fault: /* * 缺页异常处理函数 * pt_regs 各个寄存器的值 * error_code,由硬件产生:...long addr) { struct vm_area_struct *vma = NULL; if (mm) { /* vma cache,表示上次查找到的vma,这次很可能还是,程序局部原理

10.6K21

Linux中断虚拟化(一)

作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。...著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。...本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。...CPU将执行Guest系统IDT中对应的中断处理服务,图3-2为单核系统使用PIC中断芯片下的虚拟中断过程。...5)进入Guest模式后,CPU将调用Guest IDT中相应的中断服务处理中断。 PIC只能支持单处理器系统,对于多处理器系统,需要APIC支持。

6.2K30

Linux内核硬中断中断的原理和实现

我们通常所说的中断指的是硬中断(hardirq)。 (2)软中断 为了满足实时系统的要求,中断处理应该是越快越好。...linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。...(3)中断嵌套 Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。...(4)软中断指令 int是软中断指令。 中断向量表是中断号和中断处理函数地址的对应表。 int n -- 触发软中断n。相应的中断处理函数的地址为:中断向量表地址 + 4 * n。...(5)硬中断和软中断的区别 软中断是执行中断指令产生的,而硬中断是由外设引发的。 硬中断中断号是由中断控制器提供的,软中断中断号由指令直接指出,无需使用中断控制器。

21.4K21

Linux中断机制分析

中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。...1.为什么要软中断 编写驱动的时候,一个中断产生之后,内核在中断处理函数中可能需要完成很多工作。但是中断处理函数的处理是关闭了中断的。也就是说在响应中断时,系统不能再次响应外部的其它中断。...这样的后果会造成有可能丢失外部中断。于是,linux内核设计出了一种架构,中断函数需要处理的任务分为两部分,一部分在中断处理函数中执行,这时系统关闭中断。...在linux系统的进程数据结构里,有这么一个数据结构 #define preempt_count()(current_thread_info()->preempt_count), 利用preempt_count...Linux内核就中断方面就必须考虑平衡这三个方面的问题。而下面我要分析的__do_softirq函数就恰似在这三者之间打太极,游刃有余,面面俱到!

8.6K91

Linux 中断子系统(二):GIC 中断控制器

比如按键中断、串口中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core。...中断源有很多,为了区分这些不同的中断源肯定要给他们分配一个唯一 ID,这些 ID 就是中断 ID。...ID32~ID1019:这 988 个 ID 分配给 SPI,像 GPIO 中断、串口中断等这些外部中断 ,至于具体到某个 ID 对应哪个中断那就由半导体厂商根据实际情况去定义了。...分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到 CPU 接口端。分发器端要做的主要 工作如下: ①、全局中断使能控制。 ②、控制每一个中断的使能或者关闭。...③、设置每个中断的优先级。 ④、设置每个中断的目标处理器列表。 ⑤、设置每个外部中断的触发模式:电平触发或边沿触发。 ⑥、设置每个中断属于组 0 还是组 1。

5.5K20

Linux中断机制:硬件处理,初始化和中断处理

来源: CSDN | phenix_lord的专栏 硬件处理 最近解决一个关于Linux中断的问题,把相关机制整理了一遍,记录在此。...不同的外部设备、不同的体系结构、不同的OS其中断实现机制都有差别,本文对应的OS为linux3.4版本,外部设备为PCI设备、系统为X86。...概览 中断让外设能够通知CPU他需要获得服务(让CPU执行指定的中断服务例程ISR)。为了达到这个目的,首先要为中断执行做好准备,完成初始化相关的操作。...3、 使用request_irq号为该中断号指定一个服务例程; 完成了以上的初始化操作,在外设中断到来的时候,为该中断指定的ISR(Interrupt Service Routines)就能得到执行,这个执行过程大致如下...针对X86中断控制器硬件和linux对这些硬件的初始化,在《interrupt in linux》中有很详细的描述。

7.7K30

Linux 中断子系统(三):中断处理知识点大全

Linux 中断相关节点 /proc/interrupts cat 这个节点,会打印系统中所有的中断信息,如果是多核CPU,每个核都会打印出来。...CPU处理的中断,因此状态是pending and active)注意:T61标识CPU开始服务中断 T64时刻 3个clock之后,由于CPU已经ack了中断,因此GIC中CPU interface...模块 deassert nFIQCPU信号线,解除发向该CPU的中断请求 T126时刻 由于中断服务程序操作了N外设的控制寄存器(ack外设的中断),因此N外设deassert了其interrupt request...Distributor将N这个interrupt source的状态修改为idle,注意:T61~T131是CPU服务N外设中断的的时间区域,这个期间,如果有高优先级的中断pending,会发生中断的抢占...所以 Linux 下: 1、高优先级中断无法抢占正在执行的低优先级中断。 2、同处于 pending 状态的中断,优先响应高优先级中断进行处理。

4.8K20
领券