免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: cskyrain

中断处理程序为什么不能阻塞休眠???以前真没认真思考过! [复制链接]

论坛徽章:
0
发表于 2014-07-29 21:44 |显示全部楼层
本帖最后由 xupt_liangning 于 2014-07-29 21:45 编辑

我个人的理解,中断使用的是进程的中断栈,而异常和进程的内核态都使用的是进程的异常栈。。而进程切换的标志就是切换到了进程的异常栈,所以说,进程的在内核态或者异常处理程序中可以睡眠(可以切换到别的进程),因为它可以恢复。。而进程如果处在中断处理程序中,如果发生了进程切换,那么等下一次切换回来的时候,就只能回到异常栈,回不到中断栈了,所以上次的中断(包括所有嵌套的中断)就丢了。。。     我的qq:119353825  可以联系我讨论哦

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
发表于 2016-03-23 19:03 |显示全部楼层
赞成“中断函数不可重入”:
linux将嵌套转换为循环,就是为了减轻写中断程序时还要考虑可重入的负担,如果允许在中断程序里面调度别的进程,就相当于从这个循环里跳出来了,从页造成“重入”这个函数,就破坏了初衷。

不赞成“回不了家”:
中断函数本身和其它普通的内核函数没区别,其它内核函数中进行调度时可以保存的“上下文”,它也可以,如果说是“回不了家了”这个原因,那所有内核函数里都不能调用shedule()才对,内核里面不能调用shedule(),难道要在用户态调度吗。

论坛徽章:
0
发表于 2018-02-09 13:57 |显示全部楼层
请问各路大神,有什么资料或者code 证明异步中断执行时用的是独立的栈?

论坛徽章:
0
发表于 2018-02-09 14:47 |显示全部楼层
谈谈我的理解,中断发生时不能确定当前运行的是哪一个进程,但是它寄生在当前进程的堆栈中执行。

如果不支持中断嵌套,抛开效率、硬件特性等因素,软件的角度上它是可以被切换的,因为当前内核控制路径只有唯一的进程堆栈。

但是支持中断嵌套的话,当前内核控制路径就可能存在多个进程的堆栈,切换回来后,如果嵌套最底层的堆栈和顶层的堆栈不是同一个进程的话,就会引起进程调度的紊乱。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2018-03-17 23:08 |显示全部楼层
本帖最后由 yulihua49 于 2018-03-17 23:12 编辑
cskyrain 发表于 2009-11-24 20:36
一直认为中断处理函数不能休眠的是天经地义的,可从没认真思考过问什么不能休眠,阻塞。最近看了一下ulk中 ...

中断,是高优先级活动。它休眠,这个cpu就得不到调度这期间就等于死掉了一个cpu。
我们采用中断降级办法取代休眠。即安排好数据条件,把剩余事务转移到一个普通级别的任务继续。本次中断处理结束,返回。系统按照普通优先级调度剩余任务。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP