CN118132306A - 一种节省内存的小型嵌入式***任务调度方法 - Google Patents
一种节省内存的小型嵌入式***任务调度方法 Download PDFInfo
- Publication number
- CN118132306A CN118132306A CN202410237893.5A CN202410237893A CN118132306A CN 118132306 A CN118132306 A CN 118132306A CN 202410237893 A CN202410237893 A CN 202410237893A CN 118132306 A CN118132306 A CN 118132306A
- Authority
- CN
- China
- Prior art keywords
- task
- stack area
- background
- scheduling
- tasks
- 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
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000004590 computer program Methods 0.000 claims description 15
- 230000000737 periodic effect Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System (AREA)
Abstract
本发明公开了一种节省内存的小型嵌入式***任务调度方法,方法包括建立运行主栈区与任务栈区列表,将后台任务注册到任务栈区列表中;接收任务调度请求,将后台任务按任务栈区列表顺序逐一从任务栈区拷贝至运行主栈区运行;发生中断时,将运行中的后台任务中断,保存当前中断的后台任务返回地址,并将当前中断的后台任务所有数据拷贝至与其对应的任务栈区内存储;在主栈区运行前台任务,前台任务执行完毕后,自动执行未完成的后台任务,继而根据任务栈区列表内的任务顺序选择并运行下一个任务。本发明通过以上设计,有效管理了***资源,减少了内存的占用,确保了***任务执行的连续性和完整性,减少了因任务中断或切换而导致的错误或数据丢失。
Description
技术领域
本发明涉及计算机领域,尤其是一种节省内存的小型嵌入式***任务调度方法。
背景技术
在嵌入式***中,任务调度的主要功能是从多个用户任务中选择一个就绪的任务,然后调转到用户任务执行,是确保***稳定、高效运行的关键。目前市场上的嵌入式操作***为每个任务都单独分配了一个栈区域,这被称为任务栈。然而,这种设计存在一些问题:除了用于执行任务的代码,任务栈还需要为前台中断服务程序提供空间。这意味着,在为每个任务分配栈空间时,除了任务本身的运行需求外,还需要额外预留一部分空间以应对可能的中断处理。这种做法导致了资源的显著浪费,因为每个任务都需要额外的栈空间来应对中断,增加了整个***的内存消耗。此外,为了满足这种增大的内存需求,可能需要使用更大容量的内存芯片,亦增加了硬件成本。
因此,我们需要寻找一种更加高效和经济的任务调度和内存管理方法,以减少内存浪费和降低硬件成本。
发明内容
为了解决上述背景技术中的问题,本发明提供了一种节省内存的小型嵌入式***任务调度方法,不仅有效地管理了***资源,大大减少了内存的占用,而且确保了***任务执行的连续性和完整性,减少了因任务中断或切换而可能导致的错误或数据丢失。
本发明解决其技术问题所采取的方案是:
第一方面,提供了一种节省内存的小型嵌入式***任务调度方法,包括以下步骤:
将嵌入式***任务划分为前台任务与后台任务;
建立运行主栈区与任务栈区列表,将后台任务注册到任务栈区列表中,各所述后台任务分别于各任务栈区内储存;
接收任务调度请求,将后台任务按任务栈区列表顺序逐一从任务栈区拷贝至运行主栈区运行;
当发生中断时,将运行中的后台任务中断,保存当前中断的后台任务返回地址至运行主栈区,并将当前中断的后台任务所有数据拷贝至与其对应的任务栈区内存储;
将前台任务拷贝至运行主栈区开始运行,前台任务执行完毕后,自动恢复运行主栈区中未完成的后台任务返回地址,执行未完成的后台任务;
未完成的后台任务执行完毕后,根据任务栈区列表内的任务指定顺序选择并运行下一个任务。
进一步的,当后台任务创建时,根据后台任务需求从任务栈区列表中分配一个合适的栈区,并根据后台任务历史运行数据预测其栈空间需求,从而选择大小合适的栈区。
进一步的,所述运行主栈区用于当前正在执行的任务,确保任务在执行过程中不受其他任务干扰;所述任务栈区用于当前等候运行的各后台任务,确保各后台任务的数据能完整的储存不丢失。
进一步的,所述前台任务采用硬件中断的方式进行任务调度,具体包括:
为所述前台任务中的多个不同任务建立优先级,组成前台任务队列,按照各前台任务的优先级采用硬件中断方式进行前台任务队列的任务调度。
进一步的,所述后台任务采用具有不同调度周期和不同中断优先级的定时器中断的方式进行任务调度,具体包括:
对所述后台任务设定调度周期,并指定任务栈区中的各个后台任务的任务标识和任务延迟数,组成任务栈区列表;
与后台任务对应的定时器中断对任务栈区列表进行周期刷新调度。
进一步的,所述与后台任务对应的定时器中断对后台任务队列进行周期刷新调度具体包括:
与后台任务对应的定时器中断对任务栈区列表按照各个后台任务的任务延迟数或在对应程序中的执行顺序进行周期刷新调度。
进一步的,当刷新到后台任务列表中的一个后台优先级高于此时刷新到运行主栈区中的一个任务即将执行或正在执行时,所述优先级较高的后台任务在主栈区中断中执行,之后再执行后台任务列表中的优先级较高的后台任务;
进一步的,所述调度所述目标任务之后,还包括:
更新任务栈区列表中除所述目标任务外的其他处于就绪状态的任务的等待时间,并更新所述目标任务的运行次数。
第二方面,提供了一种终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1至8任一项所述的节省内存的小型嵌入式***任务调度方法中的各个步骤。
第三方面,提供了一种存储介质,所述存储介质为计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1至8任一项所述的节省内存的小型嵌入式***任务调度方法中的各个步骤。
综上所述,本发明的有益效果为:
通过将嵌入式***任务划分为前台任务和后台任务,并根据任务栈区列表进行任务的调度,即后台任务按任务栈区列表顺序逐一从任务栈区拷贝至运行主栈区运行,当发生中断时,***能够迅速保存当前后台任务的状态,并切换到前台任务执行,调度灵活,进一步增强了***的响应性和实时性,当前台任务执行完毕后,***能够自动恢复运行主栈区中未完成的后台任务返回地址,继续执行未完成的后台任务,继而根据任务栈区列表内的任务指定顺序选择并运行下一个任务,保证了***任务的有序执行,整体而言,不仅有效地管理了***资源,由于后台任务在休眠或等待时被存储在任务栈区中,而不是持续占用运行主栈区的内存,因此大大减少了内存的占用,特别适用于内存资源有限的嵌入式***,而且确保了***任务执行的连续性和完整性,减少了因任务中断或切换而可能导致的错误或数据丢失。
上述说明仅是本发明的技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本实施例一种节省内存的小型嵌入式***任务调度方法的工作流程图;
图2为本实施例一种节省内存的小型嵌入式***任务调度方法的另一工作流程图。
具体实施方式
为了使本发明的内容能更容易被清楚的理解,下面根据具体实施例并结合附图,对本发明作进一步说明。
需要说明的是,本文所使用的术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有说明,“多个”的含义是两个或两个以上。
除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
如图1至图2所示,本申请公开了一种节省内存的小型嵌入式***任务调度方法,包括以下步骤:
S1、将嵌入式***任务划分为前台任务与后台任务,前台任务通常是实时性要求高、与用户界面直接相关的任务,如按键响应、屏幕刷新等,后台任务则可能是周期性运行或事件触发的任务,如数据采集、文件处理等;
S2、建立运行主栈区与任务栈区列表,将后台任务注册到任务栈区列表中,各后台任务分别于其对应的任务栈区内储存,具体的,运行主栈区用于当前正在执行的任务,确保任务在执行过程中不受其他任务干扰;任务栈区用于当前等候运行的各后台任务,确保各后台任务的数据能完整的储存不丢失;
S3、接收任务调度请求,将后台任务按任务栈区列表顺序逐一从任务栈区拷贝至运行主栈区运行,每个后台任务在执行时都会占用主栈区,而在不执行时则释放主栈区资源,从而实现了内存的有效利用;
S4、当发生中断时,当前正在运行的后台任务中断,其返回地址会被保存到运行主栈区,同时,该后台任务的所有数据也会被拷贝回其对应的任务栈区内存储。这样,当中断处理完毕后,可以迅速恢复被中断的任务;
S5、当前台任务需要执行时,将其拷贝至运行主栈区开始运行,前台任务执行完毕后,会自动恢复运行主栈区中未完成的后台任务返回地址,并继续执行该后台任务,确保了前台任务不会打断后台任务的执行流程;
S6、未完成的后台任务执行完毕后,根据任务栈区列表内的任务指定顺序选择并运行下一个任务,确保了所有后台任务都能按照预定的顺序依次执行。
具体的,当后台任务创建时,根据后台任务需求从任务栈区列表中分配一个合适的栈区,并根据后台任务历史运行数据预测其栈空间需求,这些数据可能包括任务在过去执行时所使用的最大栈空间、平均栈空间使用量以及栈空间的增长趋势等,从而选择大小合适的栈区。
具体的,前台任务采用硬件中断的方式进行任务调度,具体包括:为前台任务中的多个不同任务根据其重要性和实时性要求,赋予不同的优先级,组成前台任务队列,按照各前台任务的优先级采用硬件中断方式进行前台任务队列的任务调度,当某个事件发生时,如用户输入、定时器到期等,相应的硬件会触发一个中断请求,中断控制器接收到中断请求后,会暂停当前正在执行的任务(即被中断的任务),并保存其上下文信息(如寄存器状态、程序计数器等),执行新的前台任务,同时,被中断的任务将保持在任务队列中等待下一次调度。
具体的,后台任务采用具有不同调度周期和不同中断优先级的定时器中断的方式进行任务调度,具体包括:对后台任务设定调度周期,并指定任务栈区中的各个后台任务的任务标识和任务延迟数,组成任务栈区列表;与后台任务对应的定时器中断对任务栈区列表进行周期刷新调度。
具体的,与后台任务对应的定时器中断对后台任务队列进行周期刷新调度具体包括:与后台任务对应的定时器中断对任务栈区列表按照各个后台任务的任务延迟数或在对应程序中的执行顺序进行周期刷新调度。
具体的,当刷新到后台任务列表中的一个后台优先级高于此时刷新到运行主栈区中的一个任务即将执行或正在执行时,优先级较高的后台任务在主栈区中断中执行,之后再执行后台任务列表中的优先级较高的后台任务;
具体的,调度所述目标任务之后,还包括:更新任务栈区列表中除所述目标任务外的其他处于就绪状态的任务的等待时间,并更新所述目标任务的运行次数,有助于***维护任务的状态信息,并为后续的调度决策提供数据支持,通过了解任务的等待时间和运行次数,***可以更加智能地进行任务调度,提高***的整体性能和用户体验。
本申请还公开了一种终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,存储器是终端设备中用于存储数据和计算机程序的部分,它可以是非易失性的(如闪存、硬盘驱动器等),也可以是易失性的(如RAM),存储器中存储的计算机程序是终端设备运行的基础,而数据则可能包括任务的历史运行数据、栈区列表、任务队列等;处理器是终端设备的核心部件,负责执行存储在存储器中的计算机程序,并处理各种数据和任务,处理器执行程序时,会按照程序中定义的逻辑和算法来执行各种操作,如分配栈区、预测栈空间需求、任务调度等;计算机程序是终端设备实现各种功能的关键,它包含了实现前述方法所需的逻辑和算法,当处理器执行这个程序时,会按照程序中的指令来执行各个步骤,如建立任务队列、处理硬件中断、进行任务调度和上下文切换等。
本申请还公开了一种存储介质,存储介质为计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述方法中的各个步骤,这种存储介质对于软件的分发、安装和运行至关重要,因为它提供了一个持久、可靠的存储方式,使得计算机程序可以在不同的设备之间复制、传输和执行。
综上所述,本实施例的有益效果为:本实施例通过将嵌入式***任务划分为前台任务和后台任务,并根据任务栈区列表进行任务的调度,即后台任务按任务栈区列表顺序逐一从任务栈区拷贝至运行主栈区运行,当发生中断时,***能够迅速保存当前后台任务的状态,并切换到前台任务执行,调度灵活,进一步增强了***的响应性和实时性,当前台任务执行完毕后,***能够自动恢复运行主栈区中未完成的后台任务返回地址,继续执行未完成的后台任务,继而根据任务栈区列表内的任务指定顺序选择并运行下一个任务,保证了***任务的有序执行,整体而言,不仅有效地管理了***资源,由于后台任务在休眠或等待时被存储在任务栈区中,而不是持续占用运行主栈区的内存,因此大大减少了内存的占用,特别适用于内存资源有限的嵌入式***,而且确保了***任务执行的连续性和完整性,减少了因任务中断或切换而可能导致的错误或数据丢失。
以上所述的实施例仅为本发明的优选实施方式,不能以此来限定本发明的保护范围,本领域的技术人员在发明的基础上所做的任何非实质性的变化和修改,均属于本发明的保护范围。
Claims (10)
1.一种节省内存的小型嵌入式***任务调度方法,其特征在于:
将嵌入式***任务划分为前台任务与后台任务;
建立运行主栈区与任务栈区列表,将后台任务注册到任务栈区列表中,各所述后台任务分别于各任务栈区内储存;
接收任务调度请求,将后台任务按任务栈区列表顺序逐一从任务栈区拷贝至运行主栈区运行;
当发生中断时,将运行中的后台任务中断,保存当前中断的后台任务返回地址至运行主栈区,并将当前中断的后台任务所有数据拷贝至与其对应的任务栈区内存储;
将前台任务拷贝至运行主栈区开始运行,前台任务执行完毕后,自动恢复运行主栈区中未完成的后台任务返回地址,执行未完成的后台任务;
未完成的后台任务执行完毕后,根据任务栈区列表内的任务指定顺序选择并运行下一个任务。
2.根据权利要求1所述的一种节省内存的小型嵌入式***任务调度方法,其特征在于:当后台任务创建时,根据后台任务需求从任务栈区列表中分配一个合适的栈区,并根据后台任务历史运行数据预测其栈空间需求,从而选择大小合适的栈区。
3.根据权利要求1所述的一种节省内存的小型嵌入式***任务调度方法,其特征在于:所述运行主栈区用于当前正在执行的任务,确保任务在执行过程中不受其他任务干扰;所述任务栈区用于当前等候运行的各后台任务,确保各后台任务的数据能完整的储存不丢失。
4.根据权利要求1所述的一种节省内存的小型嵌入式***任务调度方法,其特征在于:所述前台任务采用硬件中断的方式进行任务调度,具体包括:
为所述前台任务中的多个不同任务建立优先级,组成前台任务队列,按照各前台任务的优先级采用硬件中断方式进行前台任务队列的任务调度。
5.根据权利要求1所述的一种节省内存的小型嵌入式***任务调度方法,其特征在于:所述后台任务采用具有不同调度周期和不同中断优先级的定时器中断的方式进行任务调度,具体包括:
对所述后台任务设定调度周期,并指定任务栈区中的各个后台任务的任务标识和任务延迟数,组成任务栈区列表;
与后台任务对应的定时器中断对任务栈区列表进行周期刷新调度。
6.根据权利要求5所述的一种节省内存的小型嵌入式***任务调度方法,其特征在于:所述与后台任务对应的定时器中断对后台任务队列进行周期刷新调度具体包括:
与后台任务对应的定时器中断对任务栈区列表按照各个后台任务的任务延迟数或在对应程序中的执行顺序进行周期刷新调度。
7.根据权利要求6所述的一种节省内存的小型嵌入式***任务调度方法,其特征在于:当刷新到后台任务列表中的一个后台优先级高于此时刷新到运行主栈区中的一个任务即将执行或正在执行时,所述优先级较高的后台任务在主栈区中断中执行,之后再执行后台任务列表中的优先级较高的后台任务。
8.根据权利要求7所述的一种节省内存的小型嵌入式***任务调度方法,其特征在于:所述调度所述目标任务之后,还包括:
更新任务栈区列表中除所述目标任务外的其他处于就绪状态的任务的等待时间,并更新所述目标任务的运行次数。
9.一种终端设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1至8任一项所述的节省内存的小型嵌入式***任务调度方法中的各个步骤。
10.一种存储介质,所述存储介质为计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至8任一项所述的节省内存的小型嵌入式***任务调度方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410237893.5A CN118132306A (zh) | 2024-03-01 | 2024-03-01 | 一种节省内存的小型嵌入式***任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410237893.5A CN118132306A (zh) | 2024-03-01 | 2024-03-01 | 一种节省内存的小型嵌入式***任务调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118132306A true CN118132306A (zh) | 2024-06-04 |
Family
ID=91245164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410237893.5A Pending CN118132306A (zh) | 2024-03-01 | 2024-03-01 | 一种节省内存的小型嵌入式***任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118132306A (zh) |
-
2024
- 2024-03-01 CN CN202410237893.5A patent/CN118132306A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9442760B2 (en) | Job scheduling using expected server performance information | |
US9348628B2 (en) | Computer system | |
US8959515B2 (en) | Task scheduling policy for limited memory systems | |
CN106557369B (zh) | 一种多线程的管理方法及*** | |
KR100864964B1 (ko) | 연산처리시스템 및 연산처리 제어방법, 업무관리시스템 및업무관리방법과 기억매체 | |
US7979680B2 (en) | Multi-threaded parallel processor methods and apparatus | |
US10331479B2 (en) | Computing on transient resources | |
US10423446B2 (en) | Data processing | |
US20050022173A1 (en) | Method and system for allocation of special purpose computing resources in a multiprocessor system | |
CN101366012A (zh) | 用于多处理器***中的中断分配的方法和*** | |
US20150095919A1 (en) | Methods and system for swapping memory in a virtual machine environment | |
CN116450358A (zh) | 云计算***中的用于虚拟机的资源管理 | |
US20110113215A1 (en) | Method and apparatus for dynamic resizing of cache partitions based on the execution phase of tasks | |
CN109564528B (zh) | 分布式计算中计算资源分配的***和方法 | |
US8769543B2 (en) | System and method for maximizing data processing throughput via application load adaptive scheduling and context switching | |
WO2009150815A1 (ja) | マルチプロセッサシステム | |
CN103179048A (zh) | 云数据中心的主机QoS策略变换方法及*** | |
CN115269196A (zh) | 线程池动态创建方法、装置、设备及存储介质 | |
CN116010064A (zh) | Dag作业调度和集群管理的方法、***及装置 | |
CN106843890B (zh) | 基于智能决策的传感器网络、节点及其运行方法 | |
CN115362434A (zh) | 分布式数据处理的任务调度 | |
CN118132306A (zh) | 一种节省内存的小型嵌入式***任务调度方法 | |
JP2008262451A (ja) | メモリ電源管理装置及びメモリ電源管理方法 | |
CN112395063B (zh) | 一种动态多线程调度方法及*** | |
CN116048784A (zh) | 智能算法中算子的硬件动态分配方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |