中断:软件获取硬件的改变
1.轮训 软件不断地询问寄存器,来获知硬件的状态(效率极低)。
2.中断 硬件主动通知cpu 状态改变(效率很高,实时性很强)。
中断硬件的原理:
内核中断架构
在设备树里添加需要的硬件(按键中断):linux-3.14/arch/arm/boot/dts/exynos4412-fs4412.dts
因为中断程序要求快进快出,但是有时候 intr 任务很耗时,这时候就需要用到 intrrupt half(中断下半部分),中断只处理核心的任务,把大部分任务都交给中断下半部分。它是一种软件实现的机制, 用来处理中断剩下的任务。内核保证 intr half执行是先于进程的。
当硬件送来大量数据,产生中断去处理,,中断函数发现任务很耗时,中断只处理紧急不耗时的部分,剩下的让intr half去完成。
intr half 有三种实现方法:1. 软中断:专供内核开发者使用的;2.tasklet: 给驱动开发者使用的,task 任务、let-小工具、实现任务的小工具。定义并初始化 一个tasklet对象 [数据:私有数据 方法:完成中断交付的任务],中断让他去干活,tasklet就去替中断完成任务; 3.工作队列 workqueue:定义并初始化 一个 workqueue 对象 [数据:私有数据 方法:完成中断交付的任务],中断让他去干活,workqueue 就去替中断完成任务。
面试中问题:请问中断如何将任务推迟?
答:intr half(中断下半部分)
请问有哪些实现方法?
答:1.软中断 2.tasklet 3.workqueue
请问他们有什么区别?