您的位置:首页 > 运维架构 > Linux

Linux 软中断学习资料整理

2014-04-21 13:12 218 查看
一、软中断的触发时机

软中断有4个执行时机

1、从系统调用中返回(arch/i386/kernel/entry.S::ENTRY(ret_from_sys_call))、

2、从异常中返回(arch/i386/kernel/entry.S::ret_from_exception标号)、

3、调度程序中(kernel/sched.c::schedule())、

4、处理完硬件中断之后(kernel/irq.c::do_IRQ())。

它将遍历所有的softirq_vec,依次启动其中的action()。需要注意的是,软中断服务程序,不允许在硬中断服务程序中执行,也不允许在软中断服务程序中嵌套执行,但允许多个软中断服务程序同时在多个CPU上并发。

软中断是一种推后执行的机制,定时器,网卡的数据的处理是很典型的软中断,这个和中断向 量表里的中断是完全不一样的,以网络数据的处理为例,当网卡接到一个数据包后,其中断处理程序只是把数据复制到缓冲区,然后就告诉网卡,你可以再传数据给
我了,也就是中断返回,但在此之前,网卡的中断处理程序要置一个标志位,告诉操作系统有事要做,这个事就是软中断,但软中断只是很多中断返回时要做的事情 之一,操作系统每次中断返回时会检查着个标志位,看是否有事要做,如果有,就会去处理,象前面提到的网卡,这时候操作系统就回调用软中断的处理函数,网卡 的软中断程序就是做分析数据包啊,这个数据应该传给谁啊等这些工作.没有,就返回了,除了必须的部分

软中断与硬中断区别详细参考
http://blog.csdn.net/cjsycyl/article/details/7387655
二、浅析linux中断
http://blog.csdn.net/super_demo/article/details/16362801
三、中断编程示例、及深入分析
http://blog.csdn.net/tigerjibo/article/details/6069516
四、软中断、tasklet和工作队列区别
http://www.cnblogs.com/li-hao/archive/2012/01/12/2321084.html
五、linux系统调用
http://blog.csdn.net/super_demo/article/details/16363341
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: