免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4105 | 回复: 10
打印 上一主题 下一主题

[内核模块] 请教信号和软中断的关系 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-15 20:23 |只看该作者 |倒序浏览
本帖最后由 ppcc800330 于 2015-01-15 20:24 编辑

信号是通过软中断机制实现的,sigaction是注册相关的处理函数到软中断吗?

是注册到下面那个软中断里面呢?

                    CPU0       CPU1      
          HI:          0          0
       TIMER:      82917      56607
      NET_TX:        747        544
      NET_RX:       1588       1335
       BLOCK:      32704       2954
BLOCK_IOPOLL:          0          0
     TASKLET:        298          2
       SCHED:       7346      20512
     HRTIMER:        118        178
         RCU:      60065      40008


论坛徽章:
2
寅虎
日期:2014-11-25 21:47:342015小元宵徽章
日期:2015-03-06 15:58:18
2 [报告]
发表于 2015-01-15 23:06 |只看该作者
信号属于等待队列的概念吧。

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
3 [报告]
发表于 2015-01-16 00:17 |只看该作者
回复 1# ppcc800330
@镇水铁牛


信号就是信号,怎么和软中断、等待对列放在一起呢。信号是一种由unix继承下来的独立的通讯机制。在tast_struct有自己独立的结构体和队列,在返回到用户态前进行判断并调用。



   

论坛徽章:
0
4 [报告]
发表于 2015-01-16 09:02 |只看该作者
我在网上看一些文档把信号处理和软中断关联起来,如果我安装一个信号处理函数,对应的事件发生了,不是通过软中断处理的吗?

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
5 [报告]
发表于 2015-01-16 09:47 |只看该作者
回复 4# ppcc800330

书上的意思是说信号和中断处理方式类似,都会打断当前的执行流程,跳转到处理函数中

书上把信号比作软中断 是相对于硬中断来说的,这里的软中断应该理解为,是软件触发的类似中断的机制,而不是硬件产生的中断



   

论坛徽章:
1
2015元宵节徽章
日期:2015-03-06 15:51:33
6 [报告]
发表于 2015-01-16 10:49 |只看该作者
回复 1# ppcc800330


    软中断,也是中断,是不可以调度和打断的

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
7 [报告]
发表于 2015-01-17 02:40 |只看该作者
回复 4# ppcc800330
@super皮波

网上的文章害死人呀。鱼龙混杂。


你可以把他们看作用户态的“软中断”,那是一个比喻。因为信号可以异步的打断程序执行,并且执行完毕后恢复原程序执行。

但和内核态的软中断是完全的两马事。内核态的软中断是实打实的东西,是有编码,有函数的。是硬中断的下半部,是为了把硬中断的繁重工作解脱出来,在开硬中断的环境去执行。

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
8 [报告]
发表于 2015-01-17 09:39 |只看该作者
回复 7# Tinnal

恩,这个我理解,我就是给楼主做个比喻
   

论坛徽章:
0
9 [报告]
发表于 2015-01-19 20:14 |只看该作者
谢谢大家,现在基本分清了,还有两个问题请教下呢:

1:中断发生时,中断处理程序是否是会马上会抢占cpu执行,完成上半部工作?那么如果一下来很多中断,会不会导致一些很优先级很高的任务延迟响应呢。
2:中断处理程序是在中断上下文执行,但我看下半部是在ksoftirqd这个内核线程中执行,那么下半部是运行在ksoftirqd上下文中,跟上半部不在同一的上下文吧?

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
10 [报告]
发表于 2015-01-19 21:52 |只看该作者
回复 9# ppcc800330

1:中断发生时,中断处理程序是否是会马上会抢占cpu执行,完成上半部工作?那么如果一下来很多中断,会不会导致一些很优先级很高的任务延迟响应呢。
AN:会的。现在高版本的内核引入以前实时补丁的中断线程化方案,用于缓解这种现像。
2:中断处理程序是在中断上下文执行,但我看下半部是在ksoftirqd这个内核线程中执行,那么下半部是运行在ksoftirqd上下文中,跟上半部不在同一的上下文吧?
AN:软中断不一定全在ksoftirqd里执行,在硬中断返回时也会执行。中断上下文分为硬中断(上半部)上下文和软中断(下半部)上下文。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP