CN102012842A - 基于独立中断栈的中断退出时抢占调度方法 - Google Patents

基于独立中断栈的中断退出时抢占调度方法 Download PDF

Info

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
Application number
CN 201010539870
Other languages
English (en)
Inventor
程胜
陶戈丹
刘姝
王小飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
Original Assignee
BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd filed Critical BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
Priority to CN 201010539870 priority Critical patent/CN102012842A/zh
Publication of CN102012842A publication Critical patent/CN102012842A/zh
Pending legal-status Critical Current

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)中,如果是中断嵌套,则系统直接返回到被中断的低优先级中断服务程序,当最后一层中断服务程序执行完成时,系统进行抢占调度判断。
CN 201010539870 2010-11-09 2010-11-09 基于独立中断栈的中断退出时抢占调度方法 Pending CN102012842A (zh)

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 (3)

* Cited by examiner, † Cited by third party
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 上海合芯数字科技有限公司 基于独立中断栈的任务处理方法、装置、终端设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
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 华东师范大学 基于中断的实时任务调度方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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 (5)

* Cited by examiner, † Cited by third party
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 上海合芯数字科技有限公司 基于独立中断栈的任务处理方法、装置、终端设备及介质

Similar Documents

Publication Publication Date Title
KR102472775B1 (ko) 페이징 중첩을 완화시키기 위한 장치 및 방법
CN107450971B (zh) 任务处理方法及装置
CN110795222B (zh) 一种多线程任务调度方法、装置、设备及可读介质
CN110673927B (zh) 一种虚拟机的调度方法和装置
CN102207890A (zh) 一种任务信息处理方法及调度控制处理装置
US20110067034A1 (en) Information processing apparatus, information processing method, and information processing program
CN103455355B (zh) 安卓设备及其适配器视图的异步数据加载方法及装置
CN100347676C (zh) 基于PowerPC处理器的车用操作系统中断管理方法
CN105117284A (zh) 一种基于优先级比例队列的工作线程的调度方法
CN102523153B (zh) 虚拟化环境下的负载均衡方法
CN102012842A (zh) 基于独立中断栈的中断退出时抢占调度方法
CN101697152A (zh) 一种数据库存储系统及其数据的拆分方法和装置
CN106155803B (zh) 一种基于信号量的线程池共享方法及系统
KR101357975B1 (ko) 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치
CN102073618A (zh) 一种异构计算系统及其处理方法
CN103501247A (zh) 一种高并发请求处理方法及装置
EP2445118B1 (en) Method and device for protecting service based on automatic switched optical network
JP3953449B2 (ja) タスク管理プログラムおよびタスク制御装置
CN110908794B (zh) 基于任务窃取算法的任务窃取方法及系统
CN107577547B (zh) 一种高性能集群的紧急作业续算方法以及系统
US10656967B1 (en) Actor and thread message dispatching
US8151274B2 (en) Task management system
CN101349975A (zh) 实现中断底半部机制的方法及嵌入式系统
CN101877322A (zh) 产品投放方法及系统
US20200125510A1 (en) Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof

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