CN106293885A - 任务创建、挂起和恢复方法 - Google Patents
任务创建、挂起和恢复方法 Download PDFInfo
- Publication number
- CN106293885A CN106293885A CN201510261065.6A CN201510261065A CN106293885A CN 106293885 A CN106293885 A CN 106293885A CN 201510261065 A CN201510261065 A CN 201510261065A CN 106293885 A CN106293885 A CN 106293885A
- Authority
- CN
- China
- Prior art keywords
- task
- stack
- stack space
- space
- current
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提出一种任务创建方法,在创建所述任务时不对应任务分配堆栈空间;在所述任务无法获取资源时执行挂起流程;在所述任务获取资源后执行恢复流程,此时若所述任务没有堆栈空间,则对其分配堆栈空间。如此一来,实现任务堆栈动态申请和释放,同一任务在不同的业务需要下分配不同等级堆栈内存资源,保证任务维持正常的调度管理。基于上述方法创建的任务,本发明还提供了任务挂起和恢复方法,提高了堆栈内存资源的空间利用率,尤其实现了高效堆栈内存资源的在不同任务之间的充分重复利用。
Description
技术领域
本发明涉及嵌入式操作系统领域,尤其涉及一种任务创建、挂起和恢复方法。
背景技术
任务堆栈空间依据分配在不同的存储器上,访问的时延有所不同;访问时延越短性能越好,依据访问时延由短到长,堆栈空间的等级逐渐降低。
如图1所示,现有的方案均为在任务创建时,依据规划给任务分配指定大小和等级的堆栈空间,而在后续任务调度执行挂起和恢复时均不会动态释放或申请堆栈空间,也不会调整任务堆栈大小和堆栈等级。因此,任务不管处于什么状态下,都将一直占用此堆栈空间。
当任务被挂起时,任务堆栈空间仍被这个任务占用,处于闲置状态,无法实现复用。这样一来,在内存有限的情况下,增加了系统对内存的需求,同时也不利于更好的利用高效率的堆栈内存资源。任务创建时分配的堆栈空间一旦分配后是不可以调整的,无法根据当前业务、内存余量等信息,动态调整任务的堆栈空间的等级和大小,也无法将高效率的堆栈空间分配给运行效率要求更高的任务。堆栈空间内的存储信息将一直要维护,也增加了任务挂起的开销。
发明内容
为解决现有技术存在的问题,本发明提供一种任务创建及执行方法,包括
创建任务,在创建所述任务时不分配堆栈空间;
在所述任务无法获取资源时执行挂起流程;
在所述任务获取资源后执行恢复流程,此时若所述任务没有堆栈空间,则对其分配堆栈空间。
本发明还提供一种任务挂起方法,包括:
采用本发明所述任务创建及执行方法创建任务;
释放当前任务的堆栈空间以供其他任务申请;以及
执行任务切换流程,切换所述当前任务到目标任务。
可选的,释放所述当前任务的堆栈空间后,无需进行所述当前任务的上下文压栈保护。
可选的,释放所述当前任务的堆栈空间后,任务管理项中所有对所述当前任务的管理信息仍正常维护,保证其可参与正常的任务调度过程。
可选的,执行挂起前判定当前任务是否允许释放其堆栈空间,若否,则执行所述当前任务的上下文压栈保护。
可选的,当前任务的堆栈空间被释放至空闲堆栈区。
本发明还提供一种任务恢复方法,包括
采用本发明所述任务创建及执行方法创建任务;
评估待恢复任务运行所需的堆栈空间大小;
申请堆栈空间;以及
切换当前任务至所述待恢复任务。
可选的,通过从任务管理项中获取所述待恢复任务期望的任务堆栈等级,并综合考虑当前业务状态和堆栈空间余量等信息,评估出所述待恢复任务需要申请的堆栈等级,以评估所需堆栈空间的大小。
可选的,申请堆栈空间后,配置所述待恢复任务的上下文信息。
可选的,从空闲堆栈区申请所述堆栈空间。
针对现有技术的不足,本发明提出一种任务创建方法,在创建所述任务时不对应任务分配堆栈空间;在所述任务无法获取资源时执行挂起流程;在所述任务获取资源后执行恢复流程,此时若所述任务没有堆栈空间,则对其分配堆栈空间。如此一来,实现任务堆栈动态申请和释放,同一任务在不同的业务需要下分配不同等级堆栈内存资源,保证任务维持正常的调度管理。本发明提高了堆栈内存资源的空间利用率,尤其实现了高效堆栈内存资源的在不同任务之间的充分重复利用。
附图说明
图1为现有技术中任务创建和执行方法的流程图;
图2为本发明一实施例所述任务挂起方法的流程图;
图3为本发明一实施例所述任务恢复方法的流程图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。
本发明提供了一种任务创建及执行方法,包括
创建任务,在创建所述任务时不分配堆栈空间;
在所述任务无法获取资源时执行挂起流程;
在所述任务获取资源后执行恢复流程,此时若任务没有堆栈空间,则对其分配堆栈空间。
本发明在创建任务时仅仅只是创建了任务,不分配堆栈空间,这样可有效避免在连续创建任务时,对堆栈空间的需求达到峰值,增大对堆栈空间总量的需求。
本发明还提供了一种任务挂起方法,参见图2任务挂起流程(虚线框中流程是比现有技术多出的步骤)。
步骤S101,任务处理完成当前的工作后,去获取消息或信号量等;当其无法获取所需要的资源后,任务便开始调度;
步骤S102,任务调度开始执行任务挂起处理;
步骤S103,判定当前任务是否允许释放任务堆栈空间,若是则执行步骤S104,否则执行步骤S107;任务是否允许释放任务堆栈空间,可通过设置任务参数来实现;
步骤S104,释放任务堆栈空间到堆栈区,可供其它任务申请;
步骤S105,维护任务管理项中此任务各项参数,并标注任务堆栈已经释放;此处任务管理项不释放,以便此任务仍能正常参与任务调度(有别于将任务删除);
步骤S106,因任务堆栈已释放,任务运行的上下文无需压栈保护,此处直接跳过原方案的压栈保护流程,然后跳转到S108;
步骤S107,将任务上下文信息保存到任务堆栈中;
步骤S108,执行任务切换流程,切换到目标任务。
本发明还提供一种任务恢复方法,参见图3的任务恢复流程(虚线框中流程是比现有技术多出的步骤)。
步骤S201,当任务获取到所需要的资源后,任务便开始调度;
步骤S202,任务调度开始执行任务恢复处理;
步骤S203,判定当前任务是否已经释放任务堆栈空间,若是则执行步骤S204,否则执行步骤S207;任务是否已经释放任务堆栈空间,可通过设置任务参数来实现;
步骤S204,从任务管理项中获取当前任务期望的任务堆栈等级,并综合考虑当前业务状态和堆栈空间余量等信息,评估出本次任务需要申请的堆栈等级;
步骤S205,申请任务堆栈空间,并标注任务堆栈已经申请;
步骤S206,初始化任务堆栈,配置任务初始上下文信息,然后跳转到步骤S208;
步骤S207,从任务堆栈中恢复任务上下文信息;
步骤S208,执行任务切换流程,切换到目标任务。
本发明的技术方案,优化了现有任务调度处理:
1.任务创建时不分配堆栈空间,只在任务恢复时若没有分配则分配堆栈空间;
2.在任务无法获取资源执行挂起处理时,判定当前任务允许释放任务堆栈,则跳过任务运行上下保护处理,将任务的堆栈空间释放到空闲堆栈区,供其它任务申请;但任务管理项中所有对这个任务的管理信息仍正常维护,保证这个任务可参与正常的任务调度过程。
3.当任务获取到资源恢复时,若需申请新的堆栈空间,则可根据当前业务状态、堆栈空间余量等信息进行评估,根据评估处的堆栈等级和大小,申请对应堆栈内存资源。
针对现有技术的不足,本发明提出一种任务创建方法,在创建所述任务时不对应任务分配堆栈空间;在所述任务无法获取资源时执行挂起流程;在所述任务获取资源后执行恢复流程,此时若所述任务没有堆栈空间,则对其分配堆栈空间。如此一来,实现任务堆栈动态申请和释放,同一任务在不同的业务需要下分配不同等级堆栈内存资源,保证任务维持正常的调度管理。本发明提高了堆栈内存资源的空间利用率,尤其实现了高效堆栈内存资源的在不同任务之间的充分重复利用。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种任务创建及执行方法,其特征在于,包括
创建任务,在创建所述任务时不分配堆栈空间;
在所述任务无法获取资源时执行挂起流程;以及
在所述任务获取资源后执行恢复流程,此时若所述任务没有堆栈空间,则对其分配堆栈空间。
2.一种任务挂起方法,其特征在于,包括:
采用权利要求1所述的方法创建任务;
释放当前任务的堆栈空间以供其他任务申请;以及
执行任务切换流程,切换所述当前任务到目标任务。
3.如权利要求2所述的任务挂起方法,其特征在于,释放所述当前任务的堆栈空间后,无需进行所述当前任务的上下文压栈保护。
4.如权利要求2所述的任务挂起方法,其特征在于,释放所述当前任务的堆栈空间后,任务管理项中所有对所述当前任务的管理信息仍正常维护,保证其可参与正常的任务调度过程。
5.如权利要求2所述的任务挂起方法,其特征在于,执行挂起前判定当前任务是否允许释放其堆栈空间,若否,则执行所述当前任务的上下文压栈保护。
6.如权利要求2所述的任务挂起方法,其特征在于,当前任务的堆栈空间被释放至空闲堆栈区。
7.一种任务恢复方法,其特征在于,包括
采用权利要求1所述的方法创建任务;
评估待恢复任务运行所需的堆栈空间大小;
申请堆栈空间;以及
切换当前任务至所述待恢复任务。
8.如权利要求7所述的任务恢复方法,其特征在于,通过从任务管理项中获取所述待恢复任务期望的任务堆栈等级,并综合考虑当前业务状态和堆栈空间余量等信息,评估出所述待恢复任务需要申请的堆栈等级,以评估所需堆栈空间的大小。
9.如权利要求7所述的任务恢复方法,其特征在于,申请堆栈空间后,配置所述待恢复任务的上下文信息。
10.如权利要求7所述的任务恢复方法,其特征在于,从空闲堆栈区申请所述堆栈空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510261065.6A CN106293885B (zh) | 2015-05-20 | 2015-05-20 | 任务创建、挂起和恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510261065.6A CN106293885B (zh) | 2015-05-20 | 2015-05-20 | 任务创建、挂起和恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106293885A true CN106293885A (zh) | 2017-01-04 |
CN106293885B CN106293885B (zh) | 2019-06-28 |
Family
ID=57632957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510261065.6A Active CN106293885B (zh) | 2015-05-20 | 2015-05-20 | 任务创建、挂起和恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106293885B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919366A (zh) * | 2017-02-15 | 2017-07-04 | 杭州中天微系统有限公司 | 实现堆栈自适应保护的处理器 |
CN109669780A (zh) * | 2018-12-25 | 2019-04-23 | 上海极链网络科技有限公司 | 一种视频解析方法及系统 |
CN110766577A (zh) * | 2019-10-16 | 2020-02-07 | 湖北美和易思教育科技有限公司 | 一种基于大数据平台的教师集群管理系统 |
CN112783652A (zh) * | 2021-01-25 | 2021-05-11 | 珠海亿智电子科技有限公司 | 当前任务的运行状态获取方法、装置、设备及存储介质 |
CN113965611A (zh) * | 2021-10-29 | 2022-01-21 | 重庆忽米网络科技有限公司 | 一种基于资源释放和恢复的SaaS化工业APP运行方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1825286A (zh) * | 2006-03-31 | 2006-08-30 | 浙江大学 | 嵌入式sram操作系统线程实现和线程状态转换的方法 |
CN1940858A (zh) * | 2005-09-26 | 2007-04-04 | 深圳市朗科科技有限公司 | 媒体播放装置上实现多任务的方法 |
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理系统及方法 |
US20100333091A1 (en) * | 2009-06-30 | 2010-12-30 | Sun Microsystems, Inc. | High performance implementation of the openmp tasking feature |
CN103218360A (zh) * | 2012-01-18 | 2013-07-24 | 中国石油天然气集团公司 | 工业实时数据库采用内存池技术实现动态内存管理的方法 |
CN103246548A (zh) * | 2012-02-02 | 2013-08-14 | 迈普通信技术股份有限公司 | 一种容错保序的事件调度方法及装置 |
CN103365720A (zh) * | 2012-03-28 | 2013-10-23 | 国际商业机器公司 | 用于多线程环境下动态调整全局堆分配的方法和系统 |
-
2015
- 2015-05-20 CN CN201510261065.6A patent/CN106293885B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1940858A (zh) * | 2005-09-26 | 2007-04-04 | 深圳市朗科科技有限公司 | 媒体播放装置上实现多任务的方法 |
CN1825286A (zh) * | 2006-03-31 | 2006-08-30 | 浙江大学 | 嵌入式sram操作系统线程实现和线程状态转换的方法 |
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理系统及方法 |
US20100333091A1 (en) * | 2009-06-30 | 2010-12-30 | Sun Microsystems, Inc. | High performance implementation of the openmp tasking feature |
CN103218360A (zh) * | 2012-01-18 | 2013-07-24 | 中国石油天然气集团公司 | 工业实时数据库采用内存池技术实现动态内存管理的方法 |
CN103246548A (zh) * | 2012-02-02 | 2013-08-14 | 迈普通信技术股份有限公司 | 一种容错保序的事件调度方法及装置 |
CN103365720A (zh) * | 2012-03-28 | 2013-10-23 | 国际商业机器公司 | 用于多线程环境下动态调整全局堆分配的方法和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919366A (zh) * | 2017-02-15 | 2017-07-04 | 杭州中天微系统有限公司 | 实现堆栈自适应保护的处理器 |
CN109669780A (zh) * | 2018-12-25 | 2019-04-23 | 上海极链网络科技有限公司 | 一种视频解析方法及系统 |
CN109669780B (zh) * | 2018-12-25 | 2020-02-14 | 上海极链网络科技有限公司 | 一种视频解析方法及系统 |
CN110766577A (zh) * | 2019-10-16 | 2020-02-07 | 湖北美和易思教育科技有限公司 | 一种基于大数据平台的教师集群管理系统 |
CN112783652A (zh) * | 2021-01-25 | 2021-05-11 | 珠海亿智电子科技有限公司 | 当前任务的运行状态获取方法、装置、设备及存储介质 |
CN112783652B (zh) * | 2021-01-25 | 2024-03-12 | 珠海亿智电子科技有限公司 | 当前任务的运行状态获取方法、装置、设备及存储介质 |
CN113965611A (zh) * | 2021-10-29 | 2022-01-21 | 重庆忽米网络科技有限公司 | 一种基于资源释放和恢复的SaaS化工业APP运行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106293885B (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293885A (zh) | 任务创建、挂起和恢复方法 | |
DE602004030126D1 (de) | Wartungsfreundliche grid-manager | |
CN100517237C (zh) | 一种虚拟机系统及其cpu调度方法 | |
CN103514102B (zh) | 一种Java虚拟机实现内存垃圾回收的方法及装置 | |
CN102799395B (zh) | 磁盘空间的动态平衡处理方法和装置,以及磁盘系统 | |
CN103744723A (zh) | 一种线程池的管理方法和管理系统 | |
EP2053786A3 (en) | Targeted resource allocation | |
CN105704458A (zh) | 基于容器技术的视频监控云服务的平台实现方法及系统 | |
CN103885569A (zh) | 内存的管理方法及装置 | |
EP2466714A3 (en) | System and Method for Managing Cold Load Pickup Using Demand Response | |
CN102456048A (zh) | 海量数据处理方法及系统 | |
CN105871580A (zh) | 跨集群自动化部署运维系统及方法 | |
CN102207890A (zh) | 一种任务信息处理方法及调度控制处理装置 | |
CN102053916A (zh) | 一种分配内核大片连续内存的方法 | |
CN105450716A (zh) | 动态业务分发方法及系统 | |
WO2008102230A3 (en) | System and method for balancing information loads | |
WO2006115614A3 (en) | Extensible scheduling of messages on time-triggered busses | |
CN103605620A (zh) | 一种集群存储数据保护方法及装置 | |
CN109597674B (zh) | 一种共享虚拟资源池份额调度方法及系统 | |
CN104243292A (zh) | 一种邮件管理系统及邮箱动态扩容方法 | |
CN104144210A (zh) | 数据服务自动构建的方法及系统 | |
CN104572484A (zh) | 存储空间分配方法、存储空间分配装置和终端 | |
CN103885888B (zh) | 基于tlsf的嵌入式实时系统的内存管理方法、系统及装置 | |
CN104008062A (zh) | 内存管理方法及内存管理装置 | |
CN106878058B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |