免费注册 查看新帖 |

Chinaunix

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

[中断] X86架构下是否存在外设中断嵌套 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-04 14:31 |只看该作者 |倒序浏览
我说的不是异常(系统调用)之后又被外设中断夺走控制路径的情形,而是两次外设中断。
就是说,第一次发生中断时,内核正在处理,并且给PIC 一个应答,此时第二个中断发生了,那么内核是如何处理的。
主要是内核处理第二个中断的情形:

内核如何决定第二个中断可以夺走第一个中断的控制路径,如果嵌套执行了第二个中断,那么发生再什么时刻?
在第一个中断的ISR 中,是不是简单的登记了中断。之后跳到ret_from_intr()的地址。如果发生嵌套。第二个中断是不是也这样执行一遍ret_from_intr().
考虑到内核嵌套深度,第二个中断resume_kernel是怎样返回到第一个中断?

难道是这两个中断就相当于内核的两个函数的嵌套调用么,还是说别的什么。很困惑,求指点.

论坛徽章:
0
2 [报告]
发表于 2013-06-04 15:12 |只看该作者
是我自己疏忽,仔细看了下代码,在内核执行handle_IRQ_event()的时候,内核释放了中断描述符的锁,此时是可以有中断嵌入,夺取他的控制路径。而且这里我对内核thread_info结构的
preempt_count理解有误,当preempt_count大于0只是说明不允许内核抢占,应该时说内核不会发生进程切换,应该试着样子的吧,如果错了,请大家指正。
为什么没人回复讨论下啊。

论坛徽章:
0
3 [报告]
发表于 2013-06-04 16:21 |只看该作者
本帖最后由 frank529 于 2013-06-04 16:21 编辑

ULK3 P166说了中断发生的时候内核用SAVE_ALL保存现场,同时CPU也会自动保存cs,eip等寄存器到栈里。第二个中断也是通过ret_from_intr()恢复现场。此时不允许内核抢占是因为第一个中断的现场都保存在当前进程的内核栈里,如果切走了就回不到第一个中断了,所以用preempt_count来禁止内核抢占。

论坛徽章:
0
4 [报告]
发表于 2013-06-04 16:31 |只看该作者
你说的preempt_count可能不恰当,因为中断嵌套的时候增加的preempt_count的某一字段,这个字段与内核抢占无关,是用来记录内核嵌套路径深度的,你可一看下preempt_count字段的含义,我觉得应该中断的嵌套,和抢占之间不是一个含义

论坛徽章:
0
5 [报告]
发表于 2013-06-04 16:37 |只看该作者
本帖最后由 frank529 于 2013-06-04 16:37 编辑

回复 4# dxyf1524


    LKD P45, 你自己也说了当preempt_count大于0说明不允许内核抢占,这个说法是对的。preempt_count是用来标记嵌套深度的,只要它大于0,就不允许

抢占,至于为什么,我已经解释了。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
6 [报告]
发表于 2013-06-05 08:21 |只看该作者
回复 1# dxyf1524
Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但是同种中断不会打断同种中断的执行。中断嵌套的时候发生在handle_event_irq中。

具体可以参阅http://blog.chinaunix.net/uid-20662820-id-3023342.html

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP