悟空学Linux专栏----第35篇
来源:互联网 发布:和女生网络聊天技巧 编辑:程序博客网 时间:2024/06/11 22:02
因为悟空昨晚好好研究了一下软中断,所以悟空今天上课心里终于有底了。
悟空:Linux内核采用softirq_action结构体来表示软中断,具体结构体如下
struct softirq_action{
void (*action)(struct softirq_action *)
};
为了管理这些软中断,Linux内核中定义了一个数组,static struct softirq_action softirq_vec[NR_SOFTIRQS];一般情况下“NR_SOFTIRQS”为32,所以Linux内核的软中断最多只有32个。
2号童鞋:老师,为什么是32个啊,而不是其他的数字啊?
被2号童鞋这么一问,悟空竟然无法回答,悟空也感觉到很奇怪,为什么Linux内核设计了这么少的软中断,既然是个好东西Linux应该多设计一些啊。哎呀,为什么2号童鞋需要的一杯水不在我的桶里啊。悟空心想,瞎编吧。
悟空:因为Linux系统很多时候采用了32位的系统,所以采用32个,刚好可以用每位表示一个软中断。
2号童鞋:哦……
悟空:而且软中断和中断有一个比较大的区别就是,一个中断的执行可以被其他中断打断,而软中断却不能被中断打断。
2号童鞋:那么老师,软中断可以打断中断吗?
悟空:软中断一般是由中断触发的,所以软中断一般不能打断中断,但是中断可以打断软中断。打个比喻,老师可以打断学生说话,但是学生不能打断老师上课,2号童鞋你明白了吗?
2号童鞋无语,只好点点头。
悟空:
软中断的注册函数为:
void open_softirq(int nr,void (*action)(struct softirq_action*));
nr为软中断号,action为软中断的处理函数。
软中断的挂起函数为:
void raise_softirq(unsigned int nr);
void raise_softirq_irqoff(unsigned int nr)。
这时2号童鞋心里产生了一个很大的疑问,为什么悟空老师没有说软中断的注销函数啊?2号童鞋很想问,但是又不敢问。
- 悟空学Linux专栏----第35篇
- 悟空学Linux专栏----第1篇
- 悟空学Linux专栏----第2篇
- 悟空学Linux专栏----第3篇
- 悟空学Linux专栏----第4篇
- 悟空学Linux专栏----第5篇
- 悟空学Linux专栏----第6篇
- 悟空学Linux专栏----第7篇
- 悟空学Linux专栏----第8篇
- 悟空学Linux专栏----第9篇
- 悟空学Linux专栏----第10篇
- 悟空学Linux专栏----第11篇
- 悟空学Linux专栏----第12篇
- 悟空学Linux专栏----第13篇
- 悟空学Linux专栏----第15篇
- 悟空学Linux专栏----第16篇
- 悟空学Linux专栏----第17篇
- 悟空学Linux专栏----第18篇
- 悟空学Linux专栏----第33篇
- android使用ViewPager实现底部菜单栏和左右滑动效果,加载多个Activity
- 悟空学Linux专栏----第34篇
- Altium Designer 3D封装下载及导入教程
- 如何判断android 网络连接是否可用
- 悟空学Linux专栏----第35篇
- osm文件导入PostGIS
- android padding和margin的区别
- ABAP 日期时间函数
- Android Studio 快捷键
- struts jxl导出Excel
- 检测密码强度
- ibatis[mybatis]的安全加固
- Android中使用GSON包解析JSON数据(简单JSON)