CN102012842A - 基于独立中断栈的中断退出时抢占调度方法 - Google Patents
基于独立中断栈的中断退出时抢占调度方法 Download PDFInfo
- Publication number
- CN102012842A CN102012842A CN 201010539870 CN201010539870A CN102012842A CN 102012842 A CN102012842 A CN 102012842A CN 201010539870 CN201010539870 CN 201010539870 CN 201010539870 A CN201010539870 A CN 201010539870A CN 102012842 A CN102012842 A CN 102012842A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- stack
- task
- independent
- scheduling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及一种基于独立中断栈的中断退出时抢占调度方法,其包括以下步骤:1)***将中断任务的上下文保存在任务的堆栈中;2)***切换到分配的专用于中断处理的堆栈空间;3)执行中断程序;4)中断退出前,先切换回被中断任务的堆栈,最后才进行中断抢占调度。本发明具有以下优点:1.有效支持重负载下的中断处理,而不容易导致***堆栈溢出,提高***可靠性;2.不需要转移被中断任务上下文,中断处理迅速;3.中断退出时的调度方法与任务级调度保持一致,使汇编代码量压缩到最少。
Description
技术领域
本发明涉及一种基于独立中断栈的中断退出时抢占调度方法,属于嵌入式操作***技术领域。
背景技术
对于不支持独立中断栈的处理器,如SPARC,中断发生后,CPU使用被中断任务的堆栈进行中断处理,工作流程如图1所示。中断发生后,中断现场被保存在任务A的堆栈中并且中断服务程序使用任务A的堆栈执行中断服务程序。与支持独立中断栈的CPU相比,当***中断嵌套层数过多时,容易造成任务栈溢出,导致***崩溃。
针对上述可能导致任务栈溢出的问题,传统的方法是为任务设置尽可能大的任务堆栈空间,降低堆栈溢出的可能性。由于被中断的任务具有不确定性,因此需要为***中所有的任务都设置尽可能大的堆栈空间,而***在进行中断处理时,最多只会占用一个任务的堆栈,这样就造成内存资源的极大浪费。
发明内容
为了解决这些问题,本发明为不支持硬件中断栈的处理器提供了一种类似于硬件中断栈的处理方法。在***保存完中断上下文后,***先切换到分配的专用于中断处理的堆栈空间,然后执行中断服务程序。在中断服务程序执行完成后,中断退出前,先切换回被中断的任务栈,最后才进行中断抢占调度。由于中断上下文是直接保存在任务的堆栈中,相当于任务的局部变量,因而可以安全地切换出去,而不会造成中断上下文的丢失。
本发明采用的技术方案如下:
一种基于独立中断栈的中断退出时抢占调度方法,其特征在于包括以下步骤:
1)***将被中断任务的上下文保存在任务的堆栈中;
2)***切换到分配的专用于中断处理的堆栈空间;
3)执行中断服务程序;
4)中断退出前,先切换回被中断任务的堆栈,最后才进行中断抢占调度。
在所述步骤3)中,如果是中断嵌套,则***直接调用中断服务程序。
在所述步骤4)中,如果是中断嵌套,则***直接返回到被中断的低优先级服务程序,当最后一层中断服务程序执行完成时,***进行抢占调度判断。
本发明具有以下优点:
1.有效支持重负载下的中断处理,而不容易导致***堆栈溢出,提高***可靠性;
2.不需要转移被中断任务上下文,中断处理迅速;
3.中断退出时的调度方法与任务级调度保持一致,使汇编代码量压缩到最少。
附图说明
图1是传统中断嵌套执行原理;
图2是任务栈与独立中断栈的切换原理;
图3是基于独立中断栈的中断嵌套执行流程图;
图4是基于独立中断栈的中断嵌套执行原理。
具体实施方式
本发明为不支持硬件中断栈的处理器提供了一种类似于硬件中断栈的处理方法。在***保存完中断上下文后,***先切换到分配的专用于中断处理的堆栈空间,然后执行中断服务程序。在中断服务程序执行完成后,中断退出前,先切换回被中断的任务栈,最后才进行中断抢占调度。所谓抢占调度是指,高优先级任务可以抢占正在运行的低优先级任务,而中断可以抢占任何任务。***总是使高优先级任务和中断处理可以得到及时处理,以确保***的实时性。由于中断上下文是直接保存在任务的堆栈中,相当于任务的局部变量,因而可以安全的切换出去,而不会造成中断上下文的丢失。原理框图如图2所示。
当第一次中断进入时,***将被中断任务的上下文保存在任务自己的堆栈中,然后***切换到独立的中断栈,执行***中断服务程序。如果是中断嵌套,则被中断的是低优先级的中断服务程序,其上下文直接保存在独立的中断栈中,然后***直接调用中断服务程序,而不需要进行中断栈的切换。在中断退出时,***先进行判断,如果是中断嵌套的情况,***直接返回到被中断的低优先级中断服务程序。当最后一层中断服务程序执行完成时,***进行抢占调度判断,即:在***中,如果有更高优先级的任务准备就绪且调度未被锁定,则***保存当前任务的上下文,切换到高优先级的任务中去执行。由于在第一次进入中断时,被中断任务的上下文已经保存在任务自己的堆栈中,对中断服务程序或其他任务来说是不可见的,所以不再需要转移被中断任务的上下文到该任务的TCB中,***可以直接进行调度,切换到其他任务去执行。经过本发明的处理后,在***进行中断处理时,不再使用被中断任务的堆栈,降低了***对任务栈的空间需求,在保证功能正确的同时,加快了中断处理流程。具体处理过程如图3所示。
中断发生时的任务栈与中断栈的变化如图4所示。任务A被中断的现场保存在当前任务栈中;然后堆栈指针切换到独立的中断栈。如果在执行中断服务程序期间,再次发生中断,那么,此时堆栈指针已经指向中断栈,无需进行切换了,直接将中断现场保存到中断栈中即可,当中断服务程序执行完毕后,再恢复中断现场。
本发明已经在神舟OS操作***中成功应用。通过本技术,神舟OS可以有效地降低任务栈的空间需求,提高***的中断吞吐量。
Claims (3)
1.一种基于独立中断栈的中断退出时抢占调度方法,其特征在于包括以下步骤:
1)***将中断任务的上下文保存在任务的堆栈中;
2)***切换到分配的专用于中断处理的堆栈空间;
3)执行中断程序;
4)中断退出前,先切换回被中断任务的堆栈,最后才进行中断抢占调度。
2.如权利要求1所述的基于独立中断栈的中断退出时抢占调度方法,其特征在于:
在所述步骤3)中,如果是中断嵌套,则***直接调用中断服务程序。
3.如权利要求1所述的基于独立中断栈的中断退出时抢占调度方法,其特征在于:
在所述步骤4)中,如果是中断嵌套,则***直接返回到被中断的低优先级中断服务程序,当最后一层中断服务程序执行完成时,***进行抢占调度判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010539870 CN102012842A (zh) | 2010-11-09 | 2010-11-09 | 基于独立中断栈的中断退出时抢占调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010539870 CN102012842A (zh) | 2010-11-09 | 2010-11-09 | 基于独立中断栈的中断退出时抢占调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102012842A true CN102012842A (zh) | 2011-04-13 |
Family
ID=43843018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010539870 Pending CN102012842A (zh) | 2010-11-09 | 2010-11-09 | 基于独立中断栈的中断退出时抢占调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102012842A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778009A (zh) * | 2012-10-18 | 2014-05-07 | 深圳市中兴微电子技术有限公司 | 中断处理方法及装置 |
CN108595256A (zh) * | 2018-03-20 | 2018-09-28 | 武汉市聚芯微电子有限责任公司 | 一种基于risc-v架构芯片采用软件实现中断嵌套的方法 |
CN117193979A (zh) * | 2023-09-08 | 2023-12-08 | 上海合芯数字科技有限公司 | 基于独立中断栈的任务处理方法、装置、终端设备及介质 |
CN117573318A (zh) * | 2023-11-24 | 2024-02-20 | 北京智芯微电子科技有限公司 | 中断控制方法、处理器***、芯片及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1655124A (zh) * | 2005-03-04 | 2005-08-17 | 清华大学 | 基于PowerPC处理器的车用操作***中断管理方法 |
CN1687901A (zh) * | 2005-06-09 | 2005-10-26 | 华东师范大学 | 基于中断的实时任务调度方法 |
-
2010
- 2010-11-09 CN CN 201010539870 patent/CN102012842A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1655124A (zh) * | 2005-03-04 | 2005-08-17 | 清华大学 | 基于PowerPC处理器的车用操作***中断管理方法 |
CN1687901A (zh) * | 2005-06-09 | 2005-10-26 | 华东师范大学 | 基于中断的实时任务调度方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778009A (zh) * | 2012-10-18 | 2014-05-07 | 深圳市中兴微电子技术有限公司 | 中断处理方法及装置 |
CN108595256A (zh) * | 2018-03-20 | 2018-09-28 | 武汉市聚芯微电子有限责任公司 | 一种基于risc-v架构芯片采用软件实现中断嵌套的方法 |
CN108595256B (zh) * | 2018-03-20 | 2020-12-29 | 武汉市聚芯微电子有限责任公司 | 一种基于risc-v架构芯片采用软件实现中断嵌套的方法 |
CN117193979A (zh) * | 2023-09-08 | 2023-12-08 | 上海合芯数字科技有限公司 | 基于独立中断栈的任务处理方法、装置、终端设备及介质 |
CN117193979B (zh) * | 2023-09-08 | 2024-02-23 | 上海合芯数字科技有限公司 | 基于独立中断栈的任务处理方法、装置、终端设备及介质 |
CN117573318A (zh) * | 2023-11-24 | 2024-02-20 | 北京智芯微电子科技有限公司 | 中断控制方法、处理器***、芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107450971B (zh) | 任务处理方法及装置 | |
CN101452399B (zh) | 任务二级调度模块及方法 | |
WO2009133669A1 (ja) | 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム | |
CN102012842A (zh) | 基于独立中断栈的中断退出时抢占调度方法 | |
CN102546946B (zh) | 移动终端处理任务的方法及装置 | |
US20150212794A1 (en) | System and method for supporting a lazy sorting priority queue in a computing environment | |
CN106406991B (zh) | 一种ThreadX操作***在ARM处理器上的运行方法 | |
CN102207890A (zh) | 一种任务信息处理方法及调度控制处理装置 | |
US20110067034A1 (en) | Information processing apparatus, information processing method, and information processing program | |
CN103455355B (zh) | 安卓设备及其适配器视图的异步数据加载方法及装置 | |
CN100347676C (zh) | 基于PowerPC处理器的车用操作***中断管理方法 | |
CN104182361B (zh) | 数据缓存处理方法及装置 | |
CN101697152A (zh) | 一种数据库存储***及其数据的拆分方法和装置 | |
EP2306314A3 (en) | Method and system for resource management using fuzzy logic timeline filling | |
CN102523153B (zh) | 虚拟化环境下的负载均衡方法 | |
KR101357975B1 (ko) | 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치 | |
CN106155803A (zh) | 一种基于信号量的线程池共享方法及*** | |
CN103677959B (zh) | 一种基于组播的虚拟机集群迁移方法及*** | |
JP3953449B2 (ja) | タスク管理プログラムおよびタスク制御装置 | |
EP2445118A1 (en) | Method and device for protecting service based on automatic switched optical network | |
CN101349975B (zh) | 一种在嵌入式操作***上实现中断底半部机制的方法及装置 | |
US10656967B1 (en) | Actor and thread message dispatching | |
CN100419689C (zh) | 中断处理方法及装置 | |
US8151274B2 (en) | Task management system | |
CN109063516A (zh) | 数据处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110413 |