免费注册 查看新帖 |

Chinaunix

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

[中断] 中断优先级的疑问。。。 [复制链接]

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-29 20:44 |只看该作者 |倒序浏览
若在isr处理中开中断,此时irr里有多个位置为1,此时处理哪个?

讨论下?谢谢

论坛徽章:
3
双鱼座
日期:2013-09-04 19:47:39天蝎座
日期:2013-12-11 20:30:532015年亚洲杯之澳大利亚
日期:2015-04-20 00:28:02
2 [报告]
发表于 2014-03-29 22:41 |只看该作者
           When the processor core is ready to handle the next interrupt, the local APIC clears the highest priority IRRbit that is set and sets the corresponding ISR bit...
           When the interrupt service routing issues a write to EOI register, the local APIC reponds by clearing the highest priority ISR bit is set.
           It then reapts the process of clearing the highest priority bit in the IRR and setting the corresponding bit in the ISR. The processor core then begins executing the service routine for the highest priority bit set in the ISR..

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
3 [报告]
发表于 2014-03-29 22:51 来自手机 |只看该作者
如果你的处理器不是太老的话, 一般是cpu芯片中断控制器模块自动选择。一旦软件打开中断,中断控制器就能选择优先级最高的中断,让处理器处理。该中断的处理程序就被运行。
当然,如果该中断线上挂有多个中断源,就得软件在第一级isr 里区分。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2014-03-30 20:29 |只看该作者
本帖最后由 chishanmingshen 于 2014-03-30 20:43 编辑

回复 3# linuxfellow
回复 2# kiongf

谢谢!

我奇怪的是为何都说:linux的硬中断是不区分优先级的?

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
5 [报告]
发表于 2014-03-31 09:03 |只看该作者
回复 4# chishanmingshen
请参考:
http://bbs.chinaunix.net/thread-2072280-1-1.html


   

论坛徽章:
3
双鱼座
日期:2013-09-04 19:47:39天蝎座
日期:2013-12-11 20:30:532015年亚洲杯之澳大利亚
日期:2015-04-20 00:28:02
6 [报告]
发表于 2014-03-31 20:43 |只看该作者
回复 4# chishanmingshen

    这个我也不清楚..
    我在intel文档中有看到, 当有高优先级的中断产生,设置IRR的bit后会比较IRR和当前ISR的最高bit.如果IRR bit高于ISR,就会停止当前的中断处理转而去执行新的ISR的中断服务.
    所以我想是否是因为linux进入了中断上下文之后,禁止了local interrupt,导致这种机制无法实现?正在执行的中断上半部无法被中断,所以才没有中断优先级这种说法。
    个人愚见,欢迎拍砖。。

论坛徽章:
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
7 [报告]
发表于 2014-04-01 08:32 |只看该作者

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2014-04-01 08:52 |只看该作者
回复 7# 瀚海书香

    是啊,linux内核软件上没有区分优先级,但是如果硬件上(LAPIC/IOAPIC)区分了呢?那样的话,效果还是区分了!

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
9 [报告]
发表于 2014-04-01 09:42 |只看该作者
个人理解:硬件优先级需要软件配合来实现,通常CPU提供TPR寄存器来屏蔽低优先级的中断,而如果软件支持优先级,那么就需要利用该寄存器来屏蔽低优先级中断,从而实现“低优先级中断不能打断高优先级中断”的目的,最终实现“中断优先级”。
而x86的linux实现中没有使用TPR寄存器,没有屏蔽低优先级中断,从而没有实现“中断优先级”。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2014-04-01 09:48 |只看该作者
回复 5# humjb_1983
    谢谢!等我仔细看看!

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP