CN118170520A - 基于嵌入式多核实时操作系统的dag任务调度方法、计算机程序产品、存储介质及终端 - Google Patents
基于嵌入式多核实时操作系统的dag任务调度方法、计算机程序产品、存储介质及终端 Download PDFInfo
- Publication number
- CN118170520A CN118170520A CN202410415896.3A CN202410415896A CN118170520A CN 118170520 A CN118170520 A CN 118170520A CN 202410415896 A CN202410415896 A CN 202410415896A CN 118170520 A CN118170520 A CN 118170520A
- Authority
- CN
- China
- Prior art keywords
- dag
- task
- core
- operating system
- node
- 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 43
- 238000004590 computer program Methods 0.000 title claims abstract description 13
- 230000006870 function Effects 0.000 claims description 44
- 230000015654 memory Effects 0.000 claims description 17
- 239000002243 precursor Substances 0.000 claims description 11
- 239000000725 suspension Substances 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 11
- 230000008878 coupling Effects 0.000 abstract description 3
- 238000010168 coupling process Methods 0.000 abstract description 3
- 238000005859 coupling reaction Methods 0.000 abstract description 3
- 230000002618 waking effect Effects 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 10
- 241000307141 Acorales Species 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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
- Stored Programmes (AREA)
Abstract
本发明公开了基于嵌入式多核实时操作系统的DAG任务调度方法、计算机程序产品、存储介质及终端,属于实时操作系统任务调度领域,包括:将DAG任务移植至嵌入式多核实时操作系统;执行DAG任务,进行DAG任务调度,唤醒后继任务;若后继任务为它核任务,向目标核发起中断请求,进而使目标核收到中断后,根据中断请求中的任务标识符,就绪对应的DAG任务。通过DAG调度机制结合核间中断进行核间DAG任务的调度与管理,无需依赖现有特定DAG模型建立与分析算法,降低了上层算法和底层机制的耦合度;核间任务调度能够兼容并行计算任务的优势,以此保证多核实时操作系统的实时性,提高了DAG任务应用的可靠性和系统资源的利用率。
Description
技术领域
本发明涉及实时操作系统任务调度领域,尤其涉及基于嵌入式多核实时操作系统的DAG任务调度方法、计算机程序产品、存储介质及终端。
背景技术
传统的实时系统由于应用场景较为简单,通常采用单核处理器架构和保守的实时调度算法,以保障系统的实时性和可靠性。随着高性能体系结构的快速发展,新兴应用场景不断涌现,实时系统的复杂度也急剧上升,其中以航空航天、医疗设备、工业控制和自动驾驶等带有强实时属性的领域最具有代表性。传统的单核处理器架构和调度算法已逐渐不能满足这些复杂应用场景的实时性和可靠性需求。
目前,多核实时系统逐渐取代单核实时系统成为主流的实时系统架构。但是,多核实时系统在提供高性能算力的同时,也为系统的任务调度管理带来了巨大的挑战。多核实时系统的任务调度等问题已被证明是NP Hard科学难题。多核系统中存在多个处理器之间的竞争和干扰,例如共享缓存、总线、内存等,这些竞争和干扰会导致任务的执行时间变长,从而影响实时性。同时,多核系统中任务的执行时间很难预测,因为它们受到其他任务和处理器的影响。因此,传统的基于最坏情况执行时间(WCET)的分析方法可能不适用于多核系统,需要考虑更多的因素,例如任务的同步、迁移、抢占等。
另一方面,随着功能要求的日益增长,任务结构逐渐向多并行化发展,任务间普遍存在复杂依赖关系。而有向无环图DAG(Directed Acyclic Graph)能够适用于描述这种具有复杂依赖关系的任务集合。一个DAG任务集合由节点和边两个部分构成,其中每个节点代表一个子任务,有向边表示依赖关系。DAG任务模型的提出使得任务能够更加高效地利用计算机的多核处理能力,现有技术中对于DAG任务如何分配到某个处理器核心上以实现负载均衡,以及同层级DAG任务之间的优先级确定都有不少的算法和技术方案。但是,对于真实应用场景下,在已经建立DAG任务模型、设定DAG任务优先级以及完成了DAG任务处理器的分配的基础上,使用实时操作系统支持DAG任务调度机制,以实现复杂拓扑任务结构执行流程的技术框架还尚未成熟,如何保证嵌入式多核系统中核间任务调度处理的实时性仍是目前亟需解决的技术问题。
发明内容
本发明的目的在于克服现有技术的问题,提供基于嵌入式多核实时操作系统的DAG任务调度方法、计算机程序产品、存储介质及终端。
本发明的目的是通过以下技术方案实现:基于嵌入式多核实时操作系统的DAG任务调度方法,该方法包括以下步骤:
获取并初始化系统全局DAG图;
在全局DAG图中加入节点,并在操作系统中创建对应任务;
在全局DAG图中加入边,进而关联前驱后继任务;
执行DAG任务,进行DAG任务调度:每个DAG节点对应的DAG任务在执行完成后,将全局DAG图中执行完毕的DAG节点作为起始点的有向边,调度后继DAG节点对应的DAG任务;当一个后继DAG节点对应的DAG任务满足就绪条件,检查满足就绪条件的DAG任务是否是当前CPU核上的任务,若否,通过核间中断向目标核发起中断请求,进而使目标核收到中断后,根据中断请求中的任务标识符,就绪对应的DAG任务。
在一示例中,获取并初始化系统全局DAG图前,还包括:
注册用于响应核间中断的核间中断服务函数,核间中断服务函数检测目标任务是否在本核挂起队列下,若是,则将其从挂起队列上取下,并加入就绪队列,等待操作系统调度。
在一示例中,关联前驱后继任务后,还包括:
验证全局DAG图中是否包含环结构,若否,继续执行DAG任务;若是,修改全局DAG图拓扑结构。
在一示例中,还包括DAG任务调度策略注册步骤,包括:
创建DAG调度策略控制块:提供用于在操作系统中新建一种调度策略的数据结构,并创建一个数据结构类型的变量,进而将DAG调度策略注册至操作系统中;
初始化DAG调度策略类型;
初始化DAG调度策略线程,包括基于优先级抢占式调度要求的DAG任务优先级的初始化、以及栈初始化;
初始化DAG调度策略的释放函数,以在被操作系统守护任务释放时被调用,进而释放DAG任务所占用的资源;
初始化DAG调度策略的退出函数,以在DAG任务退出时,尝试唤醒该DAG任务的后继节点任务;
初始化DAG调度策略的延时函数,当所有的DAG任务需要在一个固定周期后被重新执行,延时函数将在操作系统所管理的心跳时钟中断中被调用,用于重新将DAG任务就绪;
初始化DAG调度策略名称,以对DAG调度策略的名字进行命名;
将DAG调度策略控制块挂载到操作系统调度策略链表,进而调用DAG任务调度策略。
在一示例中,针对DAG任务核间中断,当当前CPU核上的任务Taskn执行完毕,调用DAG任务线程退出函数,尝试唤醒后继节点任务时,包括:
线程退出函数访问任务Taskn的线程控制块,获取任务对应的DAG任务节点id;
再将任务节点id作为指引,访问系统全局DAG图的二维数组,获取任务Taskn的后继任务节点id;
根据后继任务节点id,访问系统全局DAG图的一维数组,将后继任务节点id对应的DAG节点数据结构中剩余未完成前驱节点的个数减一;
若剩余未完成前驱节点的个数等于零,则根据DAG节点数据结构中的后继节点的处理器id,判断后继节点任务是否为它核任务,若是,则向目标核发送核间中断;
目标核响应该核间中断,调用DAG核间中断服务函数,根据后继节点在操作系统中创建的线程id,调用操作系统接口就绪对应线程,以此完成DAG核间中断完成,目标后继任务唤醒。
需要进一步说明的是,上述方法各示例对应的技术特征可以相互组合或替换构成新的技术方案。
本发明还包括一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一示例或多个示例组合形成的所述基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。
本发明还包括一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一示例或多个示例组成形成的所述基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。
本发明还包括一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一示例或多个示例形成的所述的基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。
与现有技术相比,本发明有益效果是:
本发明通过获取系统全局DAG图,并在全局DAG图中加入节点/边,进而将DAG任务移植至嵌入式多核实时操作系统,相较于传统的调度框架技术,更加简洁,具有较低的学习成本与门槛;通过系统提供的DAG调度机制结合核间中断进行核间DAG任务的调度与管理,无需依赖现有特定DAG模型建立与分析算法,降低了上层算法和底层机制的耦合度;同时,核间任务调度能够兼容并行计算任务的优势,以此保证多核实时操作系统的实时性,提高了DAG任务应用的可靠性和系统资源的利用率。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明,此处所说明的附图用于提供对本申请的进一步理解,构成本申请的一部分,在这些附图中使用相同的参考标号表示相同或相似的部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本发明一示例提供的方法流程图;
图2为本发明一示例提供的DAG任务相关的数据结构示意图;
图3为本发明一优选示例提供的方法流程图;
图4为本发明一示例提供的DAG调度策略在操作系统中的注册流程;
图5为本发明一示例提供的DAG任务核间中断流程示意图。
具体实施方式
下面结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,属于“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方向或位置关系为基于附图所述的方向或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,使用序数词(例如,“第一和第二”、“第一至第四”等)是为了对物体进行区分,并不限于该顺序,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,属于“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
本发明设计并实现了一种基于嵌入式多核实时操作系统的DAG任务调度机制,用于多核实时系统的设计与开发,能够满足DAG任务在多核硬件平台上的运行需求,简化多核实时系统的开发流程,保障系统的实时性和可靠性。
需要说明的是,本发明作为一种基于嵌入式多核实时操作系统的DAG任务调度机制,并不涉及如何将一个包含依赖关系的任务集合转化为一个具有DAG逻辑拓扑结构的模型的过程,即:对于DAG任务模型的建立、DAG任务优先级的设定以及DAG任务处理器的分配方式,本发明并不提供技术方案参考,本发明只针对已经提前通过某种算法或者技术方案,建立好的DAG任务集合,提供在操作系统内的调度机制。
在一示例中,如图1所示,基于嵌入式多核实时操作系统的DAG任务调度方法,该方法包括以下步骤:
S1:提供系统全局DAG图初始化接口;获取并初始化系统全局DAG图,为全局DAG图分配一片内存空间,并将DAG图对应的数据结构进行初始化,将节点和边赋初值;
S2:提供DAG任务节点的初始化接口;初始化一个DAG任务节点,在操作系统中创建一个DAG调度策略的任务,并将该任务挂载到目标核的挂起队列上,并初始化DAG数据结构中其余的数据字段;
S3:提供DAG任务边的初始化接口;在两个DAG节点添加一条有向边,表示两个DAG节点之间的前驱后继关系;
S4:为操作系统注册一种DAG任务调度策略:每个DAG节点对应的DAG任务在执行完成后,操作系统以全局DAG图中该DAG节点为起始点的有向边,调度后继DAG节点对应的DAG任务,后继线程能被操作系统调度器就绪的充要条件即为:该DAG节点的所有前驱DAG节点都已执行完毕;
S5:为操作系统注册一种DAG任务核间中断服务函数:当一个后继DAG节点对应的DAG任务满足就绪条件,操作系统检查后继DAG节点是否是当前CPU核上的任务,若是,直接将该任务加入本核就绪队列;若不是,则通过核间中断,向目标核发起中断请求,目标核收到中断后,根据中断请求中的任务标识符,就绪对应的DAG任务。
具体地,嵌入式多核实时操作系统维护一个系统全局DAG图,如图2所示,全局DAG由三个部分组成:一维数组node、二维数组edges和整型变量node_num。
其中,一维数组node用于负责存储系统中所有的DAG任务节点。一个DAG任务节点对应的数据结构包含若干字段:nid作为DAG节点的id;tid作为该节点在操作系统中创建的线程id;tcb作为线程指针;former_task_num作为该节点剩余未完成前驱节点的个数;former_task_num_origin作为该节点原始的前驱节点个数;core_id作为该节点分配的处理器id;spinlock作为该节点的自旋锁。需要说明的是,former_task_num的作用在于,每当一个节点的某个前驱节点执行完毕,该节点的former_task_num减一。当期减到零时,表示该节点的所有前驱节点执行完毕,该节点对应的线程可以被调度。而former_task_num_origin用于记录该节点的原始前驱节点个数,当该节点需要被重新执行(周期DAG任务或执行失败)时,还原初始状态。二维数组edges用于负责存储全局DAG图的边信息。二维数组的两个维度都是节点索引,第一个维度作为第二个维度的前驱维度。当两个节点之间存在一条边时,由前驱节点对应的索引以及后继节点对应的索引共同组成一个二维索引,并将edges数组中该二维索引对应的元素置一。例如,当DAG节点1号node[1]作为DAG节点2号node[2]的前驱节点时,edges[1][2]=1。二维数组edges的对角线元素恒为0。整型变量node_num用于存储系统全局DAG图中已经包含的DAG节点数量。
步骤S2中,还包括任务节点的添加与删除:
添加一个DAG任务节点,调用节点添加函数int dag_add_node(void(*route)(void*args),void*input,void*output);该API接口(节点添加函数)将会在系统全局DAG图中添加一个DAG节点,并在操作系统中创建一个DAG调度策略的线程任务,并暂时将其挂起等待就绪,再返回该DAG节点的序号;其中,route为DAG节点任务的函数体,core_id为处理器的编号,input为DAG节点的输入,output为DAG节点的输出。
删除一个DAG任务节点,调用节点删除函数int dag_delete_node(int node),该API(节点删除函数)将删除系统全局DAG图中指定的DAG任务节点。其中,node为DAG节点的序号。
步骤S3中,还包括边添加步骤:
添加一条DAG边,调用边添加函数int dag_add_edge(int start,int end),该API(边添加函数)将在指定的两个节点之间添加一条有向边。其中start为起点节点的序号,end为终点节点的序号。
本示例通过提供DAG任务API,进而将DAG任务移植至嵌入式多核实时操作系统,相较于传统的调度框架技术,更加简洁,具有较低的学习成本与门槛。
步骤S4中,DAG任务调度(DAG task scheduling)是指对基于有向无环图DAG表示的任务或计算流程进行调度和安排的过程。DAG中的节点通常代表各个子任务或计算操作,而有向边表示它们之间的依赖关系。DAG任务调度的目标是确定在满足任务依赖关系的前提下,以最有效的方式安排任务的执行顺序,以最大化提高系统的性能。该调度方法能够适用于并行计算、分布式系统和实时系统等领域,以提高计算资源的利用效率和保证特定任务能够在截止时间之前完成。
步骤S5中,核间中断(Inter-Processor Interrupt)是指在多核处理器系统中,一个核心(CPU核)中断了另一个核心的处理过程,或者两个核心之间进行通信或同步的过程,本示例将核间中断与多核DAG任务调度进行了结合,通过系统提供的DAG调度机制结合核间中断实现核间DAG任务的调度与管理,不依赖现有特定DAG模型建立与分析算法,降低了上层算法和底层机制的耦合度;同时,通过核间中断的方式,能够兼容并行计算任务的优势,以此保证多核实时操作系统的实时性,提高了DAG任务应用的可靠性和系统资源的利用率,降低DAG任务应用在实际嵌入式多核操作系统应用场景中的开发难度。
在一示例中,获取并初始化系统全局DAG图前,设计了一种嵌入式多核实时操作系统的核间通信机制,包括:
注册用于响应核间中断的核间中断服务函数:中断操作系统在系统初始化过程中,为每个CPU处理器核注册核间中断服务函数,用于响应来自它核的核间中断;本核向目标核发送核间中断,目标核响应该核间中断,并执行中断服务函数。基于核间中断服务函数检测目标任务是否在本核挂起队列下,若是,则将其从挂起队列上取下,并加入就绪队列,等待操作系统调度。
在一示例中,如图3所示,关联前驱后继任务后,还包括:
提供全局DAG图形式化验证接口,验证全局DAG图中是否包含环结构,若否,继续执行DAG任务;若是,修改全局DAG图拓扑结构。在有向无环图中,进入顶点的有向边数量是入度,反之则为出度,DAG图中一定存在一个入度为0的顶点,否则一定存在着环,通过计算入度量进而验证全局DAG图中是否包含环结构,通过该验证步骤,能够保证任务执行的可靠性。
在一示例中,方法还包括DAG任务调度策略注册步骤,如图4所示,包括:
S41:创建DAG调度策略控制块:嵌入式多核实时操作系统提供一个数据结构acoral_sched_policy_t,用于在操作系统中新建一种调度策略;创建一个acoral_sched_policy_t类型的变量dag_policy,用于注册DAG调度策略到操作系统中;
S42:初始化DAG调度策略类型为ACORAL_SCHED_POLICY_DAG;
S43:初始化DAG调度策略线程init函数为dag_policy_thread_init;该函数用于初始化DAG任务的优先级、栈以及其他私有数据。此处DAG任务的优先级,并不是在前期模型分析时计算出的DAG任务的优先级,而是为了满足嵌入式多核实时操作系统基于优先级抢占式调度要求,而统一为DAG任务设置的优先级,通常会根据DAG任务的类型、应用的需求,将DAG任务的优先级统一设置的较高或较低。
S44:初始化DAG调度策略release函数dag_policy_thread_release;当DAG任务结束后,该函数将要被操作系统守护任务清理释放时被调用,用于释放DAG任务所占用的资源。
S45:初始化DAG调度策略exit函数dag_policy_thread_exit;当DAG任务退出时,该函数用于尝试唤醒该DAG任务的后继节点任务。尝试唤醒操作会将所有该节点的后继DAG节点任务的node数据结构中的former_task_num减一;当former_task_num为零时,表示该后继节点任务可以被执行,将被操作系统挂载到对应处理器核心的就绪队列上。
S46:初始化DAG调度策略delay_deal函数dag_delay_deal;当系统中的DAG任务拥有一个全局周期时,即所有的DAG任务需要在一个固定周期后被重新执行,该函数将在操作系统所管理的tiscks中断中被调用,用于重新将DAG任务就绪。
S47:初始化DAG调度策略name,即DAG调度策略的名字为“dag”;
S48:将DAG调度策略控制块挂载到操作系统调度策略链表。嵌入式多核实时操作系统维护了一个链表,用于挂载所有被注册到系统中的调度策略,保存这些调度策略的私有参数,进而调用acoral_register_sched_policy注册DAG任务调度策略。
在一示例中,DAG任务核间中断流程如图5所示,假设来自CPU0的任务Task0已执行完毕,则调用DAG任务线程退出函数dag_policy_thread_exit,尝试唤醒Task0的后继节点任务,包括:
S51:线程退出函数首先访问该线程TCB,获得该任务对应的DAG任务节点nid;
S52:再将任务节点nid作为index,访问系统全局DAG图的edges二维数组,获取Task0后继任务节点的nid;
S53:根据后继节点的nid,访问系统全局DAG图的node一维数组,将后继节点nid对应的DAG节点数据结构中的former_task_num减一;
S54:若former_task_num等于零,则根据后继任务节点数据结构中的core_id,判断该后继节点任务是否为它核任务,若是,则向目标核发送核间中断;核间中断传递的参数为后继节点任务对应的线程tid;
S55:目标核响应该核间中断,调用DAG核间中断服务函数,根据tid调用操作系统接口acoral_thread_rdy就绪对应线程。至此,DAG核间中断完成,目标后继任务唤醒。
本发明一示例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器(处理器上嵌入式多核实时操作系统)执行时实现上述任一示例或者多个示例组合形成的所述基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。其中,处理器为多核中央处理单元或者特定的集成电路,或者配置成实施本发明的一个或者多个集成电路。
本发明一示例还提供了一种存储介质,与上述任一示例或多个示例组合形成的基于嵌入式多核实时操作系统的DAG任务调度方法具有相同的发明构思,其上存储有计算机指令,所述计算机指令运行时执行上述任一示例或多个示例组合形成的所述基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。
基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式进行体现,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明一示例还提供了一种终端,与上述基于嵌入式多核实时操作系统的DAG任务调度方法对应的任一示例或多个示例组合具有相同的发明构思,包括存储器、处理器和嵌入式多核实时操作系统,嵌入式多核实时操作系统在处理器上运行,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器(处理器上的嵌入式多核实时操作系统)运行所述计算机指令时执行上述基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。处理器为多核中央处理单元或者特定的集成电路,或者配置成实施本发明的一个或者多个集成电路。
在一示例中,终端即电子设备以通用计算设备的形式表现,如手机、平板等,电子设备的组件可以包括但不限于:上述至少一个处理单元(处理器)、上述至少一个存储单元、连接不同系统组件(包括存储单元和处理单元)的总线。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元执行,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元可以执行上述基于嵌入式多核实时操作系统的DAG任务调度方法。
存储单元可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)3201和/或高速缓存存储单元,还可以进一步包括只读存储单元(ROM)。
存储单元还可以包括具有一组(至少一个)程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
通过以上的方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式进行实现。因此,根据本示例性实施例的技术方案可以以软件产品的形式进行体现,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台终端设备执行本申请示例性实施例的方法。
以上具体实施方式是对本发明的详细说明,不能认定本发明的具体实施方式只局限于这些说明,对于本发明所属技术领域的普通技术人员而言,在不脱离本发明构思的前提下,还可以做出若干简单推演和替代,都应当视为属于本发明的保护范围。
Claims (8)
1.基于嵌入式多核实时操作系统的DAG任务调度方法,其特征在于,包括以下步骤:
获取并初始化系统全局DAG图;
在全局DAG图中加入节点,并在操作系统中创建对应任务;
在全局DAG图中加入边,进而关联前驱后继任务;
执行DAG任务,进行DAG任务调度:每个DAG节点对应的DAG任务在执行完成后,将全局DAG图中执行完毕的DAG节点作为起始点的有向边,调度后继DAG节点对应的DAG任务;当一个后继DAG节点对应的DAG任务满足就绪条件,检查满足就绪条件的DAG任务是否是当前CPU核上的任务,若否,通过核间中断向目标核发起中断请求,进而使目标核收到中断后,根据中断请求中的任务标识符,就绪对应的DAG任务。
2.根据权利要求1所述的基于嵌入式多核实时操作系统的DAG任务调度方法,其特征在于,获取并初始化系统全局DAG图前,还包括:
注册用于响应核间中断的核间中断服务函数,核间中断服务函数检测目标任务是否在本核挂起队列下,若是,则将其从挂起队列上取下,并加入就绪队列,等待操作系统调度。
3.根据权利要求1所述的基于嵌入式多核实时操作系统的DAG任务调度方法,其特征在于,关联前驱后继任务后,还包括:
验证全局DAG图中是否包含环结构,若否,继续执行DAG任务;若是,修改全局DAG图拓扑结构。
4.根据权利要求1所述的基于嵌入式多核实时操作系统的DAG任务调度方法,其特征在于,还包括DAG任务调度策略注册步骤,包括:
创建DAG调度策略控制块:提供用于在操作系统中新建一种调度策略的数据结构,并创建一个数据结构类型的变量,进而将DAG调度策略注册至操作系统中;
初始化DAG调度策略类型;
初始化DAG调度策略线程,包括基于优先级抢占式调度要求的DAG任务优先级的初始化、以及栈初始化;
初始化DAG调度策略的释放函数,以在被操作系统守护任务释放时被调用,进而释放DAG任务所占用的资源;
初始化DAG调度策略的退出函数,以在DAG任务退出时,尝试唤醒该DAG任务的后继节点任务;
初始化DAG调度策略的延时函数,当所有的DAG任务需要在一个固定周期后被重新执行,延时函数将在操作系统所管理的心跳时钟中断中被调用,用于重新将DAG任务就绪;
初始化DAG调度策略名称,以对DAG调度策略的名字进行命名;
将DAG调度策略控制块挂载到操作系统调度策略链表,进而调用DAG任务调度策略。
5.根据权利要求1所述的基于嵌入式多核实时操作系统的DAG任务调度方法,其特征在于,针对DAG任务核间中断,当当前CPU核上的任务Taskn执行完毕,调用DAG任务线程退出函数,尝试唤醒后继节点任务时,包括:
线程退出函数访问任务Taskn的线程控制块,获取任务对应的DAG任务节点id;
再将任务节点id作为指引,访问系统全局DAG图的二维数组,获取任务Taskn的后继任务节点id;
根据后继任务节点id,访问系统全局DAG图的一维数组,将后继任务节点id对应的DAG节点数据结构中剩余未完成前驱节点的个数减一;
若剩余未完成前驱节点的个数等于零,则根据DAG节点数据结构中的后继节点的处理器id,判断后继节点任务是否为它核任务,若是,则向目标核发送核间中断;
目标核响应该核间中断,调用DAG核间中断服务函数,根据后继节点在操作系统中创建的线程id,调用操作系统接口就绪对应线程,以此完成DAG核间中断完成,目标后继任务唤醒。
6.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-5任一项所述的基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。
7.一种存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1-5任意一项所述的基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。
8.一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1-5任意一项所述的基于嵌入式多核实时操作系统的DAG任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410415896.3A CN118170520A (zh) | 2024-04-08 | 2024-04-08 | 基于嵌入式多核实时操作系统的dag任务调度方法、计算机程序产品、存储介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410415896.3A CN118170520A (zh) | 2024-04-08 | 2024-04-08 | 基于嵌入式多核实时操作系统的dag任务调度方法、计算机程序产品、存储介质及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118170520A true CN118170520A (zh) | 2024-06-11 |
Family
ID=91350371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410415896.3A Pending CN118170520A (zh) | 2024-04-08 | 2024-04-08 | 基于嵌入式多核实时操作系统的dag任务调度方法、计算机程序产品、存储介质及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118170520A (zh) |
-
2024
- 2024-04-08 CN CN202410415896.3A patent/CN118170520A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8914805B2 (en) | Rescheduling workload in a hybrid computing environment | |
US8739171B2 (en) | High-throughput-computing in a hybrid computing environment | |
JP2829078B2 (ja) | プロセス分散方法 | |
US9195506B2 (en) | Processor provisioning by a middleware processing system for a plurality of logical processor partitions | |
US9086925B2 (en) | Methods of processing core selection for applications on manycore processors | |
JP5311732B2 (ja) | マルチコアアーキテクチャにおけるスケジューリング | |
US8572626B2 (en) | Symmetric multi-processor system | |
CN114741207B (zh) | 一种基于多维度组合并行的gpu资源调度方法和系统 | |
US9973512B2 (en) | Determining variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
CN107463442B (zh) | 一种星载多核SoC任务级负载均衡并行调度方法 | |
EP1716482A2 (en) | Sharing idled processor execution resources | |
CN111459622B (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
EP1693743A2 (en) | System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock | |
CN113515361B (zh) | 一种面向服务的轻量级异构计算集群系统 | |
CN115658278B (zh) | 一种支持高并发协议交互的微任务调度机 | |
CN118170520A (zh) | 基于嵌入式多核实时操作系统的dag任务调度方法、计算机程序产品、存储介质及终端 | |
Kumar et al. | A systematic survey of multiprocessor real-time scheduling and synchronization protocol | |
CN115114022A (zh) | 对gpu资源进行使用的方法、系统、设备及介质 | |
Zhang et al. | Cost-efficient and latency-aware workflow scheduling policy for container-based systems | |
US9201688B2 (en) | Configuration of asynchronous message processing in dataflow networks | |
JP2021060707A (ja) | 同期制御システムおよび同期制御方法 | |
CN112612582B (zh) | 信号量功能实现方法和装置 | |
CN116841751B (zh) | 一种多任务线程池的策略配置方法、装置和存储介质 | |
US20230185609A1 (en) | Apparatus and method for scheduling execution of a task |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |