红联Linux门户
Linux帮助

中断能否被打断

发布时间:2010-08-16 11:34:59来源:红联作者:wucongdonglai
我最近看了LInux的设计与实现!里面说到中断上下文不可以睡眠,因为不能重新调入?那么是不是中断上下文也就不能打断呢?因为打断了也是需要重新调入的?但是中断处理程序显然是可以打断其他中短线上中断处理程序的?这怎么理解呢?
文章评论

共有 7 条评论

  1. wucongdonglai 于 2010-08-18 08:27:53发表:

    6# deepwhite
    我也是这么理解的,上半部没有上下文,被打断了的话怎么恢复呢?下半部那肯定是可以被打断的,不然按理说就没必要分上下部了!

  2. deepwhite 于 2010-08-17 09:32:42发表:

    我说的软中断。
    因为钱一阵时间学习网卡驱动,所以了解一些。但是对其他的部分并不了解。

  3. deepwhite 于 2010-08-17 09:20:37发表:

    太具体的我没看,但我的理解是, Top Half 必须关所有中断,不能被打断。中断处理的
    bottom half 可以打开其他的中断,可以被打断。

  4. wucongdonglai 于 2010-08-17 08:36:59发表:

    3# deepwhite
    除非在标明SA_INTERRUPT,即给定中断处理程序是一个快速中断处理程序,才会禁用所有的中断,不然一般的中断处理程序只会禁用本中断线上的中断,那么其他中断线上的中断还是处于被激活阶段的啊

  5. yanlong938 于 2010-08-17 01:35:13发表:

    文字游戏。。。。

  6. deepwhite 于 2010-08-16 18:20:57发表:

    [i=s] 本帖最后由 deepwhite 于 2010-8-16 18:24 编辑 [/i]

    一般的中断处理函数,在函数在进入中断上下文后,首先要 disable interrupts,然后进行中断处理的top half,最后再重新 enable interrupts。

    这样,在中断处理的 top half 的处理过程中,不会被其他的中断打断的,因为其他的中断已经被禁用了。

    所以你的倒数第二句应该不会发生。

    个人意见。

  7. wucongdonglai 于 2010-08-16 14:42:00发表:

    哪位大哥帮忙解释一下啊