[发明专利]基于独立中断栈的中断退出时抢占调度方法无效
申请号: | 201010539870.8 | 申请日: | 2010-11-09 |
公开(公告)号: | CN102012842A | 公开(公告)日: | 2011-04-13 |
发明(设计)人: | 程胜;陶戈丹;刘姝;王小飞 | 申请(专利权)人: | 北京神舟航天软件技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京北新智诚知识产权代理有限公司 11100 | 代理人: | 张卫华 |
地址: | 100094*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 独立 中断 退出 抢占 调度 方法 | ||
技术领域
本发明涉及一种基于独立中断栈的中断退出时抢占调度方法,属于嵌入式操作系统技术领域。
背景技术
对于不支持独立中断栈的处理器,如SPARC,中断发生后,CPU使用被中断任务的堆栈进行中断处理,工作流程如图1所示。中断发生后,中断现场被保存在任务A的堆栈中并且中断服务程序使用任务A的堆栈执行中断服务程序。与支持独立中断栈的CPU相比,当系统中断嵌套层数过多时,容易造成任务栈溢出,导致系统崩溃。
针对上述可能导致任务栈溢出的问题,传统的方法是为任务设置尽可能大的任务堆栈空间,降低堆栈溢出的可能性。由于被中断的任务具有不确定性,因此需要为系统中所有的任务都设置尽可能大的堆栈空间,而系统在进行中断处理时,最多只会占用一个任务的堆栈,这样就造成内存资源的极大浪费。
发明内容
为了解决这些问题,本发明为不支持硬件中断栈的处理器提供了一种类似于硬件中断栈的处理方法。在系统保存完中断上下文后,系统先切换到分配的专用于中断处理的堆栈空间,然后执行中断服务程序。在中断服务程序执行完成后,中断退出前,先切换回被中断的任务栈,最后才进行中断抢占调度。由于中断上下文是直接保存在任务的堆栈中,相当于任务的局部变量,因而可以安全地切换出去,而不会造成中断上下文的丢失。
本发明采用的技术方案如下:
一种基于独立中断栈的中断退出时抢占调度方法,其特征在于包括以下步骤:
1)系统将被中断任务的上下文保存在任务的堆栈中;
2)系统切换到分配的专用于中断处理的堆栈空间;
3)执行中断服务程序;
4)中断退出前,先切换回被中断任务的堆栈,最后才进行中断抢占调度。
在所述步骤3)中,如果是中断嵌套,则系统直接调用中断服务程序。
在所述步骤4)中,如果是中断嵌套,则系统直接返回到被中断的低优先级服务程序,当最后一层中断服务程序执行完成时,系统进行抢占调度判断。
本发明具有以下优点:
1.有效支持重负载下的中断处理,而不容易导致系统堆栈溢出,提高系统可靠性;
2.不需要转移被中断任务上下文,中断处理迅速;
3.中断退出时的调度方法与任务级调度保持一致,使汇编代码量压缩到最少。
附图说明
图1是传统中断嵌套执行原理;
图2是任务栈与独立中断栈的切换原理;
图3是基于独立中断栈的中断嵌套执行流程图;
图4是基于独立中断栈的中断嵌套执行原理。
具体实施方式
本发明为不支持硬件中断栈的处理器提供了一种类似于硬件中断栈的处理方法。在系统保存完中断上下文后,系统先切换到分配的专用于中断处理的堆栈空间,然后执行中断服务程序。在中断服务程序执行完成后,中断退出前,先切换回被中断的任务栈,最后才进行中断抢占调度。所谓抢占调度是指,高优先级任务可以抢占正在运行的低优先级任务,而中断可以抢占任何任务。系统总是使高优先级任务和中断处理可以得到及时处理,以确保系统的实时性。由于中断上下文是直接保存在任务的堆栈中,相当于任务的局部变量,因而可以安全的切换出去,而不会造成中断上下文的丢失。原理框图如图2所示。
当第一次中断进入时,系统将被中断任务的上下文保存在任务自己的堆栈中,然后系统切换到独立的中断栈,执行系统中断服务程序。如果是中断嵌套,则被中断的是低优先级的中断服务程序,其上下文直接保存在独立的中断栈中,然后系统直接调用中断服务程序,而不需要进行中断栈的切换。在中断退出时,系统先进行判断,如果是中断嵌套的情况,系统直接返回到被中断的低优先级中断服务程序。当最后一层中断服务程序执行完成时,系统进行抢占调度判断,即:在系统中,如果有更高优先级的任务准备就绪且调度未被锁定,则系统保存当前任务的上下文,切换到高优先级的任务中去执行。由于在第一次进入中断时,被中断任务的上下文已经保存在任务自己的堆栈中,对中断服务程序或其他任务来说是不可见的,所以不再需要转移被中断任务的上下文到该任务的TCB中,系统可以直接进行调度,切换到其他任务去执行。经过本发明的处理后,在系统进行中断处理时,不再使用被中断任务的堆栈,降低了系统对任务栈的空间需求,在保证功能正确的同时,加快了中断处理流程。具体处理过程如图3所示。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京神舟航天软件技术有限公司,未经北京神舟航天软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010539870.8/2.html,转载请声明来源钻瓜专利网。