免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1842 | 回复: 6

请问如果在中断上下文中调用可能引起阻塞的代码到底会怎么样? [复制链接]

论坛徽章:
0
发表于 2006-08-01 14:07 |显示全部楼层
是不是中断处理程序就永远不能继续执行了?

论坛徽章:
0
发表于 2006-08-01 17:47 |显示全部楼层
原帖由 dengcainiao 于 2006-8-1 14:07 发表
是不是中断处理程序就永远不能继续执行了?


在solaris下,这样会引起系统panic的

论坛徽章:
0
发表于 2006-08-01 23:01 |显示全部楼层
fb下中断处理已经线程化,可以休眠。不过休眠以后这个线程就不能再唤醒了。

论坛徽章:
0
发表于 2006-08-02 08:23 |显示全部楼层
原帖由 richardhesidu 于 2006-8-1 23:01 发表
fb下中断处理已经线程化,可以休眠。不过休眠以后这个线程就不能再唤醒了。


所谓中断线程化,也是低优先级的中断。
高优先级的中断还是特殊的上下文,不能够阻塞的。

所以在solaris或者bsd这样的中断线程化的系统里,在高优先级中断睡眠,基本上就是panic或者hang了

论坛徽章:
0
发表于 2006-08-02 11:07 |显示全部楼层
原帖由 richardhesidu 于 2006-8-1 23:01 发表
fb下中断处理已经线程化,可以休眠。不过休眠以后这个线程就不能再唤醒了。


不知道fb是什么? 如果中断线程化指的是RT内核中实现的那样, 中断handler在线程中执行,这样的ISR可以阻塞。

如果是到现在为止的2.6.18-RC3的内核,在中断handler中执行导致阻塞的代码,内核会把调用栈打出来,提示在atomic中调用schedule(),这个判断在schedule().  假设没有这些判断,允许你sleep,我想到了下面的结果:
1. 如果你的handler关中断运行(flags & IRQF_DISABLED),
    a 可能会导致系统死掉,这取决于你的sleep是否因为其它中断 handler,
    b 系统延迟很大
2. 如果你的系统handler开中断运行,
    a 系统死掉, 如果你用4K内核栈
    b 系统死掉,即使handler运行在任务栈中,因为任务的唤醒不一定取决于这次阻塞,如信号等

而且,根据sleep是否因为和哪些不同的上下文互斥,异常的现象需要具体分析。但你的那个设备肯定是不能正常工作的。

所谓中断线程化,也是低优先级的中断。
高优先级的中断还是特殊的上下文,不能够阻塞的。

所以在solaris或者bsd这样的中断线程化的系统里,在高优先级中断睡眠,基本上就是panic或者hang了

是这样的,在Linux的RT Patch中,如时钟中断肯定不能线程化,所以中断handler中执行导致阻塞的代码,肯定有问题。

论坛徽章:
0
发表于 2006-08-02 11:24 |显示全部楼层
学习了。。。。。
对中断线程话的概念完全不了解。不知道是不是用现在内核中用工作队列处理工作下半部一样。将中断处理程序挂到一个内核线程下的工作队列里?

论坛徽章:
0
发表于 2006-08-02 13:19 |显示全部楼层
原帖由 dengcainiao 于 2006-8-2 11:24 发表
学习了。。。。。
对中断线程话的概念完全不了解。不知道是不是用现在内核中用工作队列处理工作下半部一样。将中断处理程序挂到一个内核线程下的工作队列里?


solaris下低于时钟中断或者是dispatch lock级别以下的中断,如网卡中断,是以内核线程的形式存在的。这些线程是per CPU的,每个level一个,组成一个线程list,挂在cpu structure的结构里。

这些线程具有比一般内核线程高的优先级,可以保证尽快执行。

[ 本帖最后由 Solaris12 于 2006-8-2 13:20 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2021中国数据库技术大会

【数造未来】2021年10月18日-20日第十二届中国数据库技术大会
ITPUB、大会的会员您们好: 因目前国内疫情严峻,为响应北京市最新疫情防控要求,保障参会人员的健康和安全,组委会经协商决定:DTCC2021第十二届中国数据库技术大会延期至10月18日-20日(周一~周三)在北京国际会议中心举行,由此给各位带来的不便,敬请谅解!

大会官网
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP