Linux中断分层技术】的更多相关文章

一.中断嵌套  当系统正在执行某中断处理函数时,又产生了一个新的中断,这就叫做中断嵌套.当中断为慢速中断时,新的中断会取代当前中断,即当前中断没有执行完就结束 了:当中断为快速中断时,新的终端就不会产生.这两种情况都是我们不愿意看到的情况,所以就有了今天的题目——中断分层. 二.中断分层 中断分层是将中断处理函数分为上下两个部分.上半部是与硬件相关的,下半部是与硬件无关的.与硬件无关的内容我们就可以将它分离出中断处理函数,交给内核在系统空闲的时候处理,这样就缩短了中断处理的时间,从而减小了中断丢…
1. Linux中断分层 (1)上半部:当中断发生时,它进行相应的硬件读写,并“登记”该中断.通常由中断处理程序充当上半部.(一般情况下,上半部不可被打断) (2)下半部:在系统空闲的时候,对上半部“登记”的中断进行后续处理(“延迟处理”) 2. 对于中断下半部的实现方式一共有三种 (1)软中断 (2)tasklet微线程 (3)工作队列 3. Linux内核软中断分析 (1)当中断发生时,Linux内核会跳转到中断总入口函数asm_do_IRQ(),根据传入的中断号,执行相应handle_ir…
1. 工作队列是一种将任务推后执行的方式,它把推后的任务交由一个内核线程去执行.这样中断的下半部会在进程上下文执行,他允许重新调度甚至睡眠.每个被推后的任务叫做“工作”,由这些工作组成的队列称为工作队列. 2. Linux内核使用struct workqueue_struct来描述一个工作队列 struct workqueue_struct { struct cpu_workqueue_struct *cpu_wq; struct list_head list; const char *name…
快速中断:在开启快速中断时,其他中断不会打断快速中断. 多个中断共享一个中断号. 中断行为受到限制: 1.不能使用可能引起阻塞的函数 2.不能使用可能引起调度的函数 中断注册:request_irq() 注销中断:free_irq() 在中断处理函数中, 1.判断是否发生了所对应的中断 2.清楚发生的中断 中断编号?? 中断分层 当快速中断被关闭时,中断之间可以被打断.当一个中断服务函数未执行完之后若再产生中断,则会执行新的中断服务函数.若产生同类型的中断时,第二次新产生同类型的中断会被忽略.…
目录: <Linux中断管理> <Linux中断管理 (1)Linux中断管理机制> <Linux中断管理 (2)软中断和tasklet> <Linux中断管理 (3)workqueue工作队列> 关键词:GIC.IAR.EOI.SGI/PPI/SPI.中断映射.中断异常向量.中断上下文.内核中断线程.中断注册. 由于篇幅较大,简单梳理一下内容. 本章主要可以分为三大部分: 讲解硬件背景的1. ARM中断控制器. 系统初始化的静态过程:GIC初始化和各中断的…
目录: <Linux中断管理> <Linux中断管理 (1)Linux中断管理机制> <Linux中断管理 (2)软中断和tasklet> <Linux中断管理 (3)workqueue工作队列> 关键词: 工作队列的原理是把work(需要推迟执行的函数)交由一个内核线程来执行,它总是在进程上下文中执行. 工作队列的优点是利用进程上下文来执行中断下半部操作,因此工作队列允许重新调度和睡眠,是异步执行的进程上下文,它还能解决软中断和tasklet执行时间过长导…
kprobe调试技术是为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术. 利用kprobe技术,可以在内核绝大多数函数中动态插入探测点,收集调试状态所需信息而基本不影响原有执行流程. kprobe提供三种探测手段:kprobe.jprobe和kretprobe,其中jprobe和kretprobe基于kprobe实现,分别应用于不同探测场景中. 可以通过两种方式使用kprobe:第一种是编写内核模块,向内核注册探测点,探测函数根据需要自行定制,但是使用不方便: 第二种是使用kprobe…
中断和异常 1.1中断的由来及实质 Linux内核要管理计算机上的硬件设备,首先要和他们通信.而处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意.既然硬件的响应这么慢,那么内核就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来对它进行处理.想要实现这种功能,轮询(polling)可能会是一种解决办法.可以让内核定期对设备的状态进行查询,然后做出相应的处理.不过这种方法很可能会让内核做不少…
前一篇博文介绍了kprobes的原理与kprobe的使用与实现方式,本文介绍kprobes中的另外一种探測技术jprobe.它基于kprobe实现,不能在函数的任何位置插入探測点,仅仅能在函数的入口处探測.一般用于监測函数的入參值.本文首先通过一个简单的演示样例介绍jprobe的使用方式.然后通过源代码具体分析jprobe的实现流程. 内核源代码:Linux-4.1.x 实验环境:Fedora25(x86_64).树莓派1b 1.jprobe使用实例 使用jprobe探測函数的入參值,须要编写内…
转自:https://www.cnblogs.com/arnoldlu/p/8659988.html 目录: <Linux中断管理> <Linux中断管理 (1)Linux中断管理机制> <Linux中断管理 (2)软中断和tasklet> <Linux中断管理 (3)workqueue工作队列> 关键词: 工作队列的原理是把work(需要推迟执行的函数)交由一个内核线程来执行,它总是在进程上下文中执行. 工作队列的优点是利用进程上下文来执行中断下半部操作,…