一种任务处理方法及系统的制作方法

文档序号:6487966阅读:136来源:国知局
一种任务处理方法及系统的制作方法
【专利摘要】本发明公开了一种任务处理方法及系统,可以使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息并根据这些地址信息对任务进行调度处理或内存优化处理。由于并行任务执行过程中的效率受限于这些地址信息,本发明通过对这些地址信息进行调度处理或内存优化处理,可以有效提高任务执行的效率,缩短任务执行的时间。
【专利说明】一种任务处理方法及系统
【技术领域】
[0001]本发明涉及任务处理【技术领域】,特别是涉及一种任务处理方法及系统。
【背景技术】
[0002]机群系统是互相连接的多个独立计算机(又称为计算节点)的集合,这些计算机可以是单机或多处理器系统,每个结点都有自己的存储器、I/o设备和操作系统。机群系统对用户和应用来说是一个单一的系统,即呈现单一系统映像,它可以提供低价高效的高性能环境和快速可靠的服务。
[0003]为使机群系统呈现单一系统映像,机群系统中所有计算节点的存储空间在是全局编址的,通过相应的一致性模型和一致性协议来保证和维护各个节点地址空间的一致性。
[0004]可以采用分布式共享存储(DSM, Distributed Shared Memory)的方式共享内存,将各个计算节点的内存进行共享,以增大内存空间,但这也带来了以下问题:
[0005]由于一个任务执行中会用到多个数据,而这多个数据一般是按顺序放在内存地址中的,因此为了提高数据的读取速度,一般采用内存页面的方式来对数据进行读写,一个页中包含多个数据。机群系统具有多个计算节点,因此可以并行执行多个任务。当第一任务和第二任务需要同时访问同一内存页面中不同的数据时,虽然第一任务和第二任务所访问的内存地址不同,但现有的任务处理方法也会让其中的一个任务无效,等待另一个任务执行完毕且根据执行结果将该内存页面中的数据更新后,再执行之前无效的任务,这无疑降低了任务的执行效率。

【发明内容】

[0006]为解决上述技术问题,本发明实施例提供一种任务处理方法及系统,以实现提高任务执行效率的目的,技术方案如下:
[0007]第一方面,本发明实施例提供了一种任务处理方法,包括:
[0008]使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
[0009]根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
[0010]在第一方面的第一种可能的实现方式中,所述任务执行所需的内存地址信息还包括:
[0011]所述任务需同步的全局变量信息。
[0012]结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,本发明实施例提供的一种任务处理方法还包括:
[0013]使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
[0014]根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
[0015]在第一方面的第三种可能的实现方式中,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括:
[0016]对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
[0017]结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括:
[0018]等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
[0019]结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理,包括:
[0020]将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
[0021]结合第一方面的第二种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理,包括:
[0022]判断所述任务为正常结束还是异常结束,如果为正常结束,则提交所述任务更新后的全局变量信息,释放所述任务所占用资源,删除所述任务创建的快照;如果为异常结束,则释放所述任务所占用的资源,删除所述任务创建的快照。
[0023]结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,在所述任务为异常结束的情况下,释放所述任务所占用的资源,删除所述快照后,还包括:
[0024]重新执行所述根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理的步骤。
[0025]第二方面,本发明实施例提供了一种任务处理系统,包括:第一获取模块和任务调度模块,
[0026]所述第一获取模块使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,发送至所述任务调度模块中,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
[0027]所述任务调度模块根据第一获取模块发送的所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
[0028]在第二方面的第一种可能的实现方式中,所述任务执行所需的内存地址信息还包括:[0029]所述任务需同步的全局变量信息。
[0030]结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,本发明实施例提供的一种任务处理系统还包括:执行结束信息获取模块和任务结束处理模块,
[0031]所述执行结束信息获取模块使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息并发送至所述任务结束处理模块中,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
[0032]所述任务结束处理模块根据执行结束信息获取模块发送的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
[0033]在第二方面的第三种可能的实现方式中,所述任务调度模块包括:第一调度子模块,
[0034]所述第一调度子模块对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
[0035]结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述任务调度模块包括:第二调度子模块,
[0036]所述第二调度子模块等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
[0037]结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述任务调度模块包括:地址信息发送子模块,
[0038]所述地址信息发送子模块将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
[0039]结合第二方面的第二种可能的实现方式,在第二方面的第六种可能的实现方式中,所述任务结束处理模块,包括:结束判断子模块、异常结束处理子模块和正常结束处理子模块,
[0040]所述结束判断子模块结束所述任务并判断所述任务为正常结束还是异常结束,在所述任务异常结束时,触发所述异常结束处理子模块,在所述任务正常结束的情况下,触发所述正常结束处理子模块;
[0041]所述异常结束处理子模块,用于释放所述任务所占用的资源,删除所述任务创建的快照;
[0042]所述正常结束处理子模块,用于提交更新后的全局变量信息,释放所述任务所占用的资源,删除所述任务创建的快照。
[0043]结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,本发明实施例提供的一种任务处理系统还包括:重新执行模块,用于在所述异常结束处理子模块释放所述任务所占用的资源,删除所述快照后,重新触发所述任务调度模块。
[0044]通过应用以上技术方案,本发明实施例提供的一种任务处理方法及系统,可以使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息并根据这些地址信息对任务进行调度处理或内存优化处理。由于并行任务执行过程中的效率受限于这些地址信息,本发明通过对这些地址信息进行调度处理或内存优化处理,可以有效提高任务执行的效率,缩短任务执行的时间。
【专利附图】

【附图说明】
[0045]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]图1为本发明实施例提供的一种任务处理方法的流程示意图;
[0047]图2为本发明实施例提供的另一种任务处理方法的流程示意图;
[0048]图3为本发明实施例提供的应用程序的执行示意图;
[0049]图4为本发明实施例提供的另一种任务处理方法的流程示意图;
[0050]图5为本发明实施例提供的另一种任务处理方法的流程示意图;
[0051]图6为本发明实施例提供的另一种任务处理方法的流程示意图;
[0052]图7为本发明实施例提供的一种任务处理系统的结构示意图;
[0053]图8为本发明实施例提供的另一种任务处理系统的结构示意图;
[0054]图9为本发明实施例提供的另一种任务处理系统的结构示意图;
[0055]图10为本发明实施例提供的另一种任务处理系统的结构示意图;
[0056]图11为本发明实施例提供的另一种任务处理系统的结构示意图;
[0057]图12为本发明实施例提供的另一种任务处理系统的结构示意图;
[0058]图13为本发明实施例提供的另一种任务处理系统的结构示意图。
【具体实施方式】
[0059]为了使本【技术领域】的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0060]首先对可以实施本发明的一种构架进行说明,可以理解的是,该构架仅仅是可以实施本发明所提供方案的多个构架中的一种,本发明并不限定具体的实施构架。
[0061]本发明可以在机群系统中实施,机群系统是互相连接的多个独立计算机(又称为计算节点)的集合,这些计算机可以是单机或多处理器系统,每个结点都有自己的存储器、I/o设备和操作系统。机群系统对用户和应用来说是一个单一的系统,即呈现单一系统映像,它可以提供低价高效的高性能环境和快速可靠的服务。为使机群系统呈现单一系统映像,机群系统中所有计算节点的存储空间在逻辑上是全局编址的,通过相应的一致性模型和一致性协议来保证和维护各个节点地址空间的一致性。当然本发明还可以在其他架构中实施,如云系统。
[0062]如图1所示,本发明实施例提供的一种任务处理方法,可以包括:
[0063]S100、使用第一扩展指令创建任务并使用该第一扩展指令获得所述任务执行所需的内存地址信息,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
[0064]其中,任务执行所需的内存地址信息还可以包括:所述任务需同步的全局变量信息。本领域技术人员可以理解的是,由于仅有部分任务携带有需同步的全局变量信息,因此第一扩展指令可以仅获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息。
[0065]在实际应用中,还可以使用第一扩展指令获得其他信息,如文件描述句柄信息,本发明在此不做限定。
[0066]可以理解的是,在创建任务时就使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息可以简化流程,便于任务调度器基于这些信息进行合理的调度或使得编译器基于这些信息对任务重新分配内存地址。
[0067]其中,栈地址信息可以包括栈的起始位置和栈的大小。栈地址是各计算节点的私有地址,各计算节点对栈地址的数据修改操作对全局地址是不可见的。堆地址信息可以包括堆的起始位置和堆的大小,堆内存储的信息是全局共享的,对堆内存储数据的修改是对全局可见的。待执行指令的地址信息指明了新创建的任务需要执行的指令流的入口地址信息。需同步的全局变量信息包含了和其他任务进行同步的变量地址信息。
[0068]其中,堆地址信息可以为堆地址,栈地址信息可以为栈地址。
[0069]在实际应用中,第一扩展指令可以作为扩展的基本指令加入到基本指令集中。可以理解的是,指令集是计算机能够执行的指令的集合,它是计算机资源的良好的抽象。基本指令是在各种任务执行过程中所经常用到的一些指令,如mov、add、or等。如表I所示,为一种基本指令集:
[00"70] 表I基本指令集表[0071]指令__操作数__^_
mov mov m/imm, m将操作数I传送到操作数2
add add m/imm, m/imm, m相加(操作数1+操作数2->操作数3)
sub sub m/imm, m/imm, m相减(操作数1-操作数2->操作数3)
mul mul m/imm, m/imm.m相乘(操作数I*操作数2->操作数3)
div sub m/imm, m/imm, m相除(操作数I/操作数2->操作数3)
and and m/imm, m/imm, m位与(操作数I AND操作数2->操作数3)
or or m/imm, m/imm, m位或(操作数I OR操作数2->操作数3)


位异或(操作数I XOR操作数2->操作数
xor XOi m/imm.m/imm.m ^_i)_

分支(比较操作数I和操作数2,根据结
brbr:con m/imm, m/imm.moffs*

果con跳转到操作数3)
注释:
m为内存地址,imm为立即数,moffs*为一内存地址,con为转移条件
[0072]其中,mov为数据传送类指令,add、sub、mul、div、and、or和xor为运算类指令,
br为程序控制类指令。使用表1中列出的基本指令即可实现大多数的计算应用。为了支 持机群环境中任务的并行调度和管理,本发明中引入了与任务相关的指令:第一扩展指令。 在实际应用中,可以把第一扩展指
[0073]令也加入到基本指令集中。具体的,第一扩展指令可以如表2所示:
[0074]表2第一扩展指令操作数表
[0075]
指令__操作数__?_
newr newr m I,m2, moffs*创建新的任务
newr的三个参数ml, m2, moffs*分别为:找地址、堆地址和第一条指令地址(由于从 第一指令开始执行,因此首先获得的待执行指令的地址信息为第一条指令地址)
[0076]当任务执行所需的内存地址信息也包括任务需同步的全局变量信息时,第一扩展指令可以如表3所示:
[0077]表3第一扩展指令操作数表
[0078]指令__操作数__^_
newr newr ml, m2, m3, moffs*创建新的任务
newr的四个参数ml, m2, m3,moffs*分别为:栈地址、堆地址、同步全局更量和第一 条指令地址
[0079]其中,如表2及表3所示,根据参数ml (栈地址)可以获得栈地址信息,根据参数m2 (堆地址)可以获得堆地址信息,根据参数m3 (同步全局变量)可以获得任务需同步的全局变量信息,根据参数moffs* (第一条指令地址)可以获得任务中待执行指令的地址信息。可以理解的是,表2及表3中使用newr对第一扩展指令进行了命名,在本发明提供的其他实施例中,还可以使用其他名称对第一扩展指令进行命名。
[0080]S200、根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
[0081]可以理解的是,在获得以上信息以后,可以对任务进行调度处理或内存优化处理。具体的,可以根据以上信息选择处于空闲状态的计算节点执行该任务,可以选择距离该任务所需访问内存地址所对应的物理内存地址相近的计算节点执行该任务,也可以使得编译器根据以上信息对重新分配该任务所需访问的内存地址以对所需访问的内存地址进行优化。
[0082]举例来说:在机群系统中,为了提高系统运行效率,往往需要并行执行多个任务,将这多个任务分配给不同的计算节点。为了简化对机群系统内存的管理,一般情况下使用“页”对机群系统的虚拟内存进行划分,划分出多个虚拟内存页面,每个虚拟内存页面中都包含有多个连续的虚拟内存地址。可以理解的是,为了可以访问到所需访问的物理地址,还需要提供虚拟内存地址与物理地址之间的对应关系。由于不同任务执行过程中需要访问的虚拟内存地址不定,这也带 来了并行任务执行过程中可能存在至少两个并行任务需要访问同一虚拟内存页面中不同的虚拟内存地址的情况。当出现这种情况时,传统的任务处理方法是仅执行其中的一个任务,而让其他任务等待,这种方法无疑降低了机群系统的效率。而本发明可以在获得任务执行所需的内存地址信息后,可以根据所述任务执行所需的内存地址信息对任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
[0083]其中,任务调度处理的具体方式可以为:对并行任务所需访问的同一个虚拟内存页面进行快照处理。当仅有两个并行任务访问同一虚拟内存页面时,可以对该虚拟内存页面进行一次快照处理,将该虚拟内存页面复制到不同于该虚拟内存页面的其他空闲虚拟内存地址中。这样,这两个并行任务就可以分别访问原始的虚拟内存页面和快照获得的虚拟内存页面,不用再进行等待。
[0084]当然,还可以有其他的调度处理方式,如:重新整理任务的执行顺序,以使并行执行的多个任务执行时不再涉及相同的内存页面。举例来说,假设第一任务、第二任务首先并行执行,然后第三任务和第四任务并行执行,第一任务和第二任务都需要访问第一内存页面中的内存地址,第三任务和第四任务都需要访问第二内存页面中的内存地址。本发明可以控制第一任务和第三任务并行执行,第二任务和第四任务并行执行,这样在以上四个任务并行执行过程中就不会出现并行任务访问相同内存地址的情况。
[0085]另一种任务调度处理方式是,选择距离任务所需访问内存地址所对应的物理内存地址相近的计算节点执行该任务。可以理解的是,计算节点访问距离自己较近物理内存地址可以在更短的访问路径上完成数据访问,从而缩短读取时间,增加任务的执行速度。在处理多个任务时,如果多个任务所需访问的虚拟内存地址对应的物理内存地址都距离某计算节点较近,则可以选择该计算节点执行这多个任务,可以进一步加快任务的执行效率。
[0086]因此,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,可以包括:对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
[0087]可以理解的是,对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文是任务被执行前的准备步骤。
[0088]其中,根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理,可以包括:将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
[0089]例如,编译器为A任务分配了虚拟内存地址0001到0010,为B任务分配了虚拟地址0011到0020。假设一个虚拟内存页面中包括有1024个虚拟内存地址,那么从0000开始,到1023结束,为一个虚拟内存页面。从1024开始,到2047结束,为另一个虚拟内存页面。本发明在获得任务A和任务B执行所需的内存地址信息后,就可以得知这两个任务所需访问的虚拟内存地址位于同一个虚拟内存页面中。本发明还可以将以上信息反馈给编译器,使编译器重新为A任务和/或B任务分配内存地址。
[0090]分配的方法有多种,如,仅重新分配A任务所需访问的虚拟内存地址:为A任务分配了虚拟内存地址1025到1034。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务就可以同时执行,增加了任务执行的效率。再如,仅重新分配B任务所需访问的虚拟内存地址:为B任务分配了虚拟内存地址1035到1044。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务就可以同时执行。再如,分别对A任务所需访问的虚拟内存地址和B任务所需访问的虚拟内存地址进行重新分配:为A任务分配了虚拟内存地址0125到0134,为B任务分配了虚拟内存地址1035到1044。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务同样可以同时执行。
[0091 ] 本发明实施例提供的一种任务处理方法,可以使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息并根据这些地址信息对任务进行调度处理或内存优化处理。由于并行任务执行过程中的效率受限于这些地址信息,本发明通过对这些地址信息进行调度处理或内存优化处理,可以有效提高任务执行的效率,缩短任务执行的时间。
[0092]如图2所示,在本发明实施例提供的另一种任务处理方法中,步骤S200,可以包括:
[0093]S210、判断所述任务是否带有需同步的全局变量信息,如果是,执行步骤S230,如果否,则执行步骤S220 ;
[0094]可以理解的是,可以根据第一扩展指令获得的同步全局变量信息判断是否带有需同步的全局变量信息。具体的,当任务不带有需同步的全局变量信息时,第一扩展指令中任务需同步的全局变量信息所对应的参数可以为空。也即:可以根据需同步的全局变量信息所对应的参数返回值是否为空来判断该任务是否携带有需同步的全局变量信息。
[0095]S220、对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务;
[0096]可以理解的是,对所述任务所需访问的堆地址信息创建快照可以利用程序执行的局部性原理,任务对所需访问的堆地址内的信息进行复制,保存到本地内存,减少内存一致性维护的开销。由于任务执行上下文中的堆信息是全局共享的,因此任务通过修改堆信息就可以将任务执行的结果通知给系统的其他任务以实现任务间的数据交互。因此,可以仅对堆地址信息创建快照,而对计算节点私有的栈地址信息则不创建快照。
[0097]其中,步骤S220可以选择处于空闲状态的计算节点执行该任务。本领域技术人员可以理解的是,如图3所示,任务在执行过程中,需要首先在编译器001上编译为虚拟指令代码,为其分配虚拟内存地址,然后在虚拟机或虚拟环境中经指令编译器002翻译为目标指令,任务调度单元003 (也即任务调度器)将目标指令发送到相应的执行模块005中进行执行。其中,执行模块005可以与具体的硬件平台006相对应。
[0098]可以理解的是,将虚拟指令代码翻译为与特定硬件环境相关的目标指令可以保证应用程序和虚拟指令代码与平台无关,具有很好的适用性和可移植性。任务调度单元003可以选择空闲的执行模块005 (计算节点)来执行目标指令。具体的,可以使用静态翻译或动态翻译的方式对虚拟指令代码进行翻译。
[0099]在实际应用中,任务调度单元003可以将指令翻译器002翻译得到的目标指令分发到多个处于空闲状态的执行单元005,这多个处于空闲状态的执行单元005分别执行目标指令中的一段代码(某子任务)。也即,经过第一扩展指令和任务调度单元的调度,多个处于空闲状态的计算节点可以分别执行目标指令中的一段代码以完成多个子任务并最终完成某一任务。本实施例中,指令的执行可以是串行的,默认情况下会执行到最后一条指令。因此,可以使用特定的机制界定代码段的结束,即标明任务的结束。在本发明中,可以使用第二扩展指令来指示任务的结束。
[0100]S230、等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
[0101]本领域技术人员可以理解的是,在任务执行所需的内存地址信息包括任务需同步的全局变量信息的情况下,需首先等待该需同步的全局变量信息内容更新后,再执行后续处理。
[0102]可以理解的是,在多个任务顺序执行的过程中,在后执行的任务可能需要前面所执行任务的执行结果。因此,当第一任务需要第二任务的执行结果时,可以等待第二任务的执行结果提交后(也即等待所需同步的全局变量信息内容更新后),再启动第一任务的执行。具体的,可以使用标志位控制任务的运行。
[0103]如图4所示,本发明实施例提供的另一种任务处理方法中,还可以包括:
[0104]S300、使用第二扩展指令结束所述任务并使用该第二扩展指令获得所述任务的执行结束信息,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
[0105]具体的,第二扩展指令可以如表4所示:
[0106]表4第二扩展指令操作数表
[0107]
【权利要求】
1.一种任务处理方法,其特征在于,包括: 使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息; 根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息 对所述任务进行内存优化处理。
2.根据权利要求1所述的方法,其特征在于,所述任务执行所需的内存地址信息还包括: 所述任务需同步的全局变量信息。
3.根据权利要求1或2所述的方法,其特征在于,还包括: 使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息; 根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
4.根据权利要求1所述的方法,其特征在于,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括: 对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
5.根据权利要求2所述的方法,其特征在于,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括: 等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
6.根据权利要求1或2所述的方法,其特征在于,所述根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理,包括: 将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
7.根据权利要求3所述的方法,其特征在于,所述根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理,包括: 判断所述任务为正常结束还是异常结束,如果为正常结束,则提交所述任务更新后的全局变量信息,释放所述任务所占用资源,删除所述任务创建的快照;如果为异常结束,则释放所述任务所占用的资源,删除所述任务创建的快照。
8.根据权利要求7所述的方法,其特征在于,在所述任务为异常结束的情况下,释放所述任务所占用的资源,删除所述快照后,还包括: 重新执行所述根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理的步骤。
9.一种任务处理系统,其特征在于,包括:第一获取模块和任务调度模块, 所述第一获取模块使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,发送至所述任务调度模块中,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息; 所述任务调度模块根据第一获取模块发送的所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
10.根据权利要求9所述的系统,其特征在于,所述任务执行所需的内存地址信息还包括: 所述任务需同步的全局变量信息。
11.根据权利要求9或10所述的系统,其特征在于,还包括:执行结束信息获取模块和任务结束处理模块, 所述执行结束信息获取模块使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息并发送至所述任务结束处理模块中,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息; 所述任务结束处理模块根据执行结束信息获取模块发送的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
12.根据权利要求9所述的系统,其特征在于,所述任务调度模块包括:第一调度子模块, 所述第一调度子模块对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
13.根据权利要求10所述的系统,其特征在于,所述任务调度模块包括:第二调度子模块, 所述第二调度子模块等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
14.根据权利要求9或10所述的系统,其特征在于,所述任务调度模块包括:地址信息发送子模块, 所述地址信息发送子模块将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
15.根据权利要求11所述的系统,其特征在于,所述任务结束处理模块,包括:结束判断子模块、异常结束处理子模块和正常结束处理子模块, 所述结束判断子模块结束所述任务并判断所述任务为正常结束还是异常结束,在所述任务异常结束时,触发所述异常结束处理子模块,在所述任务正常结束的情况下,触发所述正常结束处理子模块; 所述异常结束处理子模块,用于释放所述任务所占用的资源,删除所述任务创建的快昭.所述正常结束处理子模块,用于提交更新后的全局变量信息,释放所述任务所占用的资源,删除所述任务创建的快照。
16.根据权利要求15所述的系统,其特征在于,还包括:重新执行模块,用于在所述异常结束处理子 模块释放所述任务所占用的资源,删除所述快照后,重新触发所述任务调度 模块。
【文档编号】G06F9/48GK103631648SQ201210295952
【公开日】2014年3月12日 申请日期:2012年8月20日 优先权日:2012年8月20日
【发明者】顾磷, 盛中华, 文刘飞 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1