硬中断、软中断
来源:互联网 发布:新速特软件站 官网 编辑:程序博客网 时间:2024/04/30 05:55
这篇文章介绍一下linux中向量中断、非向量中断、底半部机制、软中断、硬中断的内容,都是从网上搜过来的。
操作系统从用户态切换到内核态需要借助CPU 内部的软件中断。
向量中断:为不同的中断分配不同的中断号,进入不同的入口地址,入中地址由硬件提供;
非向量中断:同一个入口地址,进入后再由软件判断中断标志来识别具体哪个中断。
需要调度tasklet 的时候引用一个tasklet_schedule(&my_tasklet)函数就能使系统在适当的时候进行调度运行。
由于软中断必须使用可重入函数,设计上复杂度变高,如果应用不需要在多个CPU 上并行执行,没必要用软中断。
a)一种类型的tasklet 只能运行在一个CPU 上,不能并行,只能串行执行。多个不同类型的tasklet 可以并行在多个CPU 上。
b)软中断是静态分配的,在内核编译好之后,就不能改变。但tasklet 就灵活许多,可以在运行时改变(比如添加模块时)。
②工作队列:与tasklet 相似,先定义work_struct 与处理函数, INIT_WORK()实现两者的一个绑定。在顶半部中调用sschedule(&my_wq);
③软中断
硬中断:外设的中断;
软中断:通常是硬中断服务程序对内核的中断;
信号:是内核对某个进程的中断。
软中断用softirq_action 表示,raise_softirq()触发软中断;
a)产生后并不是马上执行,必须要等待内核的调度才能执行。软中断不能被自己打断,只能被硬件中断打断(上半部)。
b)可以并发运行在多个CPU 上(即使同一类型的也可以)。软中断必须设计为可重入的函数(允许多个CPU 同时操作),因此也需要使用自旋锁来保护其数据结构。
软中断和tasklet 运行于中断上下文,不可睡眠;工作队列运行于进程上下文,可以睡眠。
操作系统从用户态切换到内核态需要借助CPU 内部的软件中断。
向量中断:为不同的中断分配不同的中断号,进入不同的入口地址,入中地址由硬件提供;
非向量中断:同一个入口地址,进入后再由软件判断中断标志来识别具体哪个中断。
底半部机制
①tasklet:使用比较简单,只需要定义tasklet 及其处理函数并将两者关联。需要调度tasklet 的时候引用一个tasklet_schedule(&my_tasklet)函数就能使系统在适当的时候进行调度运行。
由于软中断必须使用可重入函数,设计上复杂度变高,如果应用不需要在多个CPU 上并行执行,没必要用软中断。
a)一种类型的tasklet 只能运行在一个CPU 上,不能并行,只能串行执行。多个不同类型的tasklet 可以并行在多个CPU 上。
b)软中断是静态分配的,在内核编译好之后,就不能改变。但tasklet 就灵活许多,可以在运行时改变(比如添加模块时)。
②工作队列:与tasklet 相似,先定义work_struct 与处理函数, INIT_WORK()实现两者的一个绑定。在顶半部中调用sschedule(&my_wq);
③软中断
硬中断:外设的中断;
软中断:通常是硬中断服务程序对内核的中断;
信号:是内核对某个进程的中断。
软中断用softirq_action 表示,raise_softirq()触发软中断;
a)产生后并不是马上执行,必须要等待内核的调度才能执行。软中断不能被自己打断,只能被硬件中断打断(上半部)。
b)可以并发运行在多个CPU 上(即使同一类型的也可以)。软中断必须设计为可重入的函数(允许多个CPU 同时操作),因此也需要使用自旋锁来保护其数据结构。
软中断和tasklet 运行于中断上下文,不可睡眠;工作队列运行于进程上下文,可以睡眠。
0 0
- 软中断,硬中断
- 硬中断、软中断
- 硬中断、软中断
- 硬中断和软中断
- 软中断与硬中断
- 软中断与硬中断
- 软中断与硬中断
- 软中断vs硬中断
- 软中断与硬中断
- 软中断和硬中断
- 软中断和硬中断
- 软中断与硬中断
- 硬中断和软中断
- 软中断与硬中断
- 硬中断和软中断
- 硬中断和软中断
- 硬中断和软中断
- 软中断与硬中断
- strcpy详细解释
- 淘宝的开源产品,你不行就别开源
- 常用的十种数据结构
- Magento 1.5版本,导出order详细订单的SQL语句 、 取消订单事件 同时删除多个ID foreach
- 巧用数据统计,十秒预估APP的广告收入
- 硬中断、软中断
- 转:C/C++中手动获取调用堆栈
- Unity委托使用
- error while loading shared libraries: xxx.so.x"错误的原因和解决办法
- 网页调用智能IC卡读写器的解决方案
- Eclipse快捷键 10个最有用的快捷键
- 解决执行dos2unix 和unix2dos命令
- Linux R Server: Error [tcl] unknown math function "min".
- 1~9数字问题