CN109614170A - 控制由计算系统执行的任务 - Google Patents

控制由计算系统执行的任务 Download PDF

Info

Publication number
CN109614170A
CN109614170A CN201811207891.2A CN201811207891A CN109614170A CN 109614170 A CN109614170 A CN 109614170A CN 201811207891 A CN201811207891 A CN 201811207891A CN 109614170 A CN109614170 A CN 109614170A
Authority
CN
China
Prior art keywords
task
subprogram
executing
node
function
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
Application number
CN201811207891.2A
Other languages
English (en)
Other versions
CN109614170B (zh
Inventor
C·W·斯坦菲尔
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.)
Ab Initio Technology LLC
Ab Initio Software LLC
Original Assignee
Ab Initio Software LLC
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 Ab Initio Software LLC filed Critical Ab Initio Software LLC
Publication of CN109614170A publication Critical patent/CN109614170A/zh
Application granted granted Critical
Publication of CN109614170B publication Critical patent/CN109614170B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)
  • Telephonic Communication Services (AREA)
  • Debugging And Monitoring (AREA)

Abstract

对任务进行控制包括:接收指定多个任务中至少部分排序的排序信息(104);并且至少部分基于所述排序信息产生用于执行至少一些所述任务的指令。存储用于执行对应于第一任务的第一子程序的指令,所述第一子程序包括第一控制部分,所述第一控制部分控制至少对应于第二任务的第二子程序的执行,所述第一控制部分包括被配置为改变与所述第二任务相关的状态信息以及基于改变后的状态信息确定是否初始化所述第二子程序的执行的函数。存储用于执行所述第二子程序的指令,所述第二子程序包括用于执行所述第二任务的任务部分和控制对应于第三任务的第三子程序的执行的第二控制部分。

Description

控制由计算系统执行的任务
本申请是申请号为201480023408.9(对应于PCT国际申请号PCT/US2014/035094)、发明名称为“控制由计算系统执行的任务”、申请日为2014年04月23日的发明专利申请的分案申请。
相关申请的交叉引用
本申请要求享有2013年4月23日提交的61/815,052号美国专利申请的优先权。
技术领域
本申请涉及控制由计算系统执行的任务。
背景技术
在控制由计算系统执行的任务的一些技术中,由为一项任务生成的进程或线程来执行该单独任务,并且在完成该任务后,此进程或线程结束。计算系统的操作系统、或利用操作系统的特征的其他集中控制实体可以被用来调度不同的任务或者管理不同任务之间的通讯。可以使用控制流图来限定多个任务的部分排序,该控制流图表明在其他下游任务(例如,任务B)开始之前某些上游任务(例如,任务A)必须完成。可能存在管理新进程的生成的控制进程,用于根据控制流图执行任务。在控制进程生成用于执行任务A的进程A之后,控制进程等待操作系统发出进程A已经结束的通知。在进程A结束之后,操作系统通知控制进程,然后控制进程生成用于执行任务B的进程B。
发明内容
在一个方案中,通常,一种控制由计算系统执行的任务的方法,所述方法包括:接收指定多个任务中至少部分排序的排序信息;并且使用至少一个处理器至少部分基于所述排序信息产生用于执行至少一些所述任务的指令。所述产生包括:存储用于执行对应于第一任务的第一子程序的指令,所述第一子程序包括第一控制部分,所述第一控制部分控制至少对应于第二任务的第二子程序的执行,所述第一控制部分包括被配置为改变与所述第二任务相关的状态信息以及基于改变后的状态信息确定是否初始化所述第二子程序的执行的函数;并且存储用于执行所述第二子程序的指令,所述第二子程序包括用于执行所述第二任务的任务部分和控制对应于第三任务的第三子程序的执行的第二控制部分。
这些方案可包括一个或多个以下特征。
所述排序信息包括控制流图,所述控制流图包括在表示相应任务的节点的各对之间的有向边,其中从上游节点到下游节点的有向边表明在所述部分排序中由所述上游节点表示的所述任务先于由所述下游节点表示的所述任务。
所述控制流图包括在表示所述第一任务的第一节点与表示所述第二任务的第二节点之间的有向边、以及在所述第二节点与表示所述第三任务的第三节点之间的有向边。
所述函数被配置为:减小或增大与所述第二任务相关的计数器,并且基于所述计数器的值确定是否初始化所述第二子程序的执行。
所述函数被配置为执行原子地减小或增大所述计数器且读取所述计数器的值的原子操作。
所述改变后的状态信息包括之前以识别所述第二任务的参数调用所述函数的调用历史。
所述函数是多个不同函数中的一个,并且所述状态信息捕捉之前以识别所述第二任务的参数来调用所述多个不同函数中任意函数的调用历史。
所述第二控制部分包括确定用于执行所述任务的所述任务部分是否被调用的逻辑。
所述逻辑基于与所述第二任务相关的标志的值来确定用于执行所述任务的所述任务部分是否被调用。
所述第一控制部分控制至少以下子程序的执行:对应于所述第二任务的所述第二子程序和对应于第四任务的第四子程序。
所述排序信息表明在所述部分排序中所述第一任务先于所述第二任务,并且表明在所述部分排序中所述第一任务先于所述第四任务,并且不约束所述部分排序中所述第二任务和所述第四任务相对于彼此的顺序。
所述第一控制部分包括:确定是否生成用于执行所述第二子程序的新进程的第一函数,以及使用与执行所述第一子程序相同的进程来初始化所述第四子程序的执行的第二函数。
在另一个方案中,通常,一种存储在计算机可读存储介质上的计算机程序,用于控制任务。所述计算机程序包括用于使计算系统执行下述步骤的指令:接收指定多个任务中至少部分排序的排序信息;并且至少部分基于所述排序信息产生用于执行至少一些所述任务的指令。所述产生包括:存储用于执行对应于第一任务的第一子程序的指令,所述第一子程序包括第一控制部分,所述第一控制部分控制至少对应于第二任务的第二子程序的执行,所述第一控制部分包括被配置为改变与所述第二任务相关的状态信息以及基于改变后的状态信息确定是否初始化所述第二子程序的执行的函数;并且存储用于执行所述第二子程序的指令,所述第二子程序包括用于执行所述第二任务的任务部分和控制对应于第三任务的第三子程序的执行的第二控制部分。
在另一个方案中,通常,一种用于控制任务的计算系统包括:输入设备或端口,被配置为接收指定多个任务中至少部分排序的排序信息;以及至少一个处理器,被配置为至少部分基于所述排序信息产生用于执行至少一些所述任务的指令。所述产生包括:存储用于执行对应于第一任务的第一子程序的指令,所述第一子程序包括第一控制部分,所述第一控制部分控制至少对应于第二任务的第二子程序的执行,所述第一控制部分包括被配置为改变与所述第二任务相关的状态信息以及基于改变后的状态信息确定是否初始化所述第二子程序的执行的函数;并且存储用于执行所述第二子程序的指令,所述第二子程序包括用于执行所述第二任务的任务部分和控制对应于第三任务的第三子程序的执行的第二控制部分。
在另一个方案中,通常,一种用于控制任务的计算系统包括:用于接收排序信息的装置,所述排序信息指定多个任务中的至少部分排序;以及用于产生指令的装置,所述指令至少部分基于所述排序信息来执行至少一些所述任务。所述产生包括:存储用于执行对应于第一任务的第一子程序的指令,所述第一子程序包括第一控制部分,所述第一控制部分控制至少对应于第二任务的第二子程序的执行,所述第一控制部分包括被配置为改变与所述第二任务相关的状态信息以及基于改变后的状态信息确定是否初始化所述第二子程序的执行的函数;并且存储用于执行所述第二子程序的指令,所述第二子程序包括用于执行所述第二任务的任务部分和控制对应于第三任务的第三子程序的执行的第二控制部分。
在另一个方案中,通常,一种执行任务的方法包括:在至少一个存储器中存储用于执行多个任务的指令,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行该任务的任务部分和控制后续任务的子程序执行的控制部分;并且由至少一个处理器执行至少一些所存储的子程序。所述执行包括:生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且在所述第一任务部分返回之后,调用包含在所述第一控制部分中的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程。
这些方案可包括一个或多个以下特征。
所述函数被配置为:减小与所述第二子程序相关的计数器,并且基于所述计数器的值确定是否初始化所述第二子程序的执行。
当使用识别对应于所述第二子程序的第二任务的参数来调用函数时,所述函数被配置为基于状态信息来确定是否初始化所述第二子程序的执行,所述状态信息捕捉之前以识别所述第二任务的参数来调用该函数的调用历史。
所述函数是多个不同函数中的一个,并且所述状态信息捕捉之前以识别所述第二任务的参数来调用所述多个不同函数中任意函数的调用历史。
所述函数被配置为:初始化所述第一进程中所述第二子程序的执行,并且响应于所述第二子程序的执行时间超过预定阈值,生成所述第二进程以继续执行所述第二子程序。
所述函数被配置为将与所述第一进程相关的栈框架提供给所述第二进程。
所述函数被配置为在生成所述第二进程之后返回以使得所述第一进程继续与所述第二进程同时执行。
所述第一控制部分包括确定所述第一任务部分是否被调用的逻辑。
所述逻辑基于与所述第一任务相关的标志的值来确定所述第一任务部分是否被调用。
所述第二子程序对应于第二任务,并且所述第一控制部分至少部分基于指定多个任务中至少部分排序的排序信息,所述多个任务包括所述第一任务和所述第二任务。
所述排序信息包括控制流图,所述控制流图包括在表示相应任务的节点的各对之间的有向边,其中从上游节点到下游节点的有向边表明在所述部分排序中由所述上游节点表示的所述任务先于由所述下游节点表示的所述任务。
在另一个方案中,通常,一种计算机程序存储在计算机可读存储介质上,用于执行任务。所述计算机程序包括用于使计算系统执行下述步骤的指令:存储用于执行多个任务的指令,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行该任务的任务部分和控制后续任务的子程序执行的控制部分;并且执行至少一些所存储的子程序。所述执行包括:生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且在所述第一任务部分返回之后,调用包含在所述第一控制部分中的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程。
在另一个方案中,通常,一种用于执行任务的计算系统包括:至少一个存储器,存储用于执行多个任务的指令,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行该任务的任务部分和控制后续任务的子程序执行的控制部分;以及至少一个处理器,被配置为执行至少一些所存储的子程序。所述执行包括:生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且在所述第一任务部分返回之后,调用包含在所述第一控制部分中的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程。
在另一个方案中,通常,一种用于执行任务的计算系统包括:存储用于执行多个任务的指令的装置,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行所述任务的任务部分和控制后续任务的子程序执行的控制部分;以及用于执行至少一些所存储的子程序的装置。所述执行包括:生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且在所述第一任务部分返回之后,调用包含在所述第一控制部分中的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程。
这些方案可包括一个或多个以下优点。
当由计算系统执行任务时,在生成用于执行任务的新进程时需要花费处理时间,并且在任务进程与调度器或保持任务相关性和排序的其他中央进程之间来回交换时需要花费时间。本文描述的技术能够以计算有效的方式来选择性地生成新进程,或者选择性地再用运行进程。基于被添加至用于执行任务的子程序的相对少量代码,编译器能够避免唯一地依赖于具有分散调度机制的集中调度器。以允许并发性和条件逻辑的方式,完成任务自然使得计算系统根据输入约束(诸如,控制流图)执行其他任务。编译器生成的与任务相关的代码在运行期间调用函数以基于存储在计数器和标志中的状态信息来确定是否执行其他任务。由此,在运行期间,编译器生成的所述代码有效地实施了控制任务子程序的调用的状态机。免于切换至调度器和从调度器切换的额外开销,计算系统可以更有效地执行细粒度的潜在同时发生的任务。
通过以下说明书和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1是计算系统的方框图。
图2A是控制流图的图表。
图2B-图2D是与执行图2A的控制流图的节点的子程序相关的进程生命周期的图表。
图3和图4是控制流图的图表。
具体实施方式
图1示出其中可以使用任务控制技术的计算系统100的示例。系统100包括用于存储任务说明104的存储系统102、用于将任务说明编译成任务子程序以执行任务的编译器106、以及用于执行被加载至存储器系统110的任务子程序的执行环境108。每个任务说明104对将要执行的任务进行编码,并且当可以执行上述任务时进行约束(包括不同任务之间的排序约束)。任务说明104中的一些可以由通过执行环境108的用户接口114相互作用的用户112来构建。所述执行环境108可能被托管在例如受一个合适的操作系统(诸如UNIX操作系统的一个版本)控制的一个或多个通用计算机。例如,所述执行环境108还可以包括多节点并行计算环境,该多节点并行计算环境包括使用多个中央处理器(CPU)或处理器内核的计算机系统的配置,这些CPU或处理器内核可以是本地(例如多处理器系统,诸如对称多处理(symmetric multi-processing,SMP)计算机),或本地分布式(例如多个处理器耦合为集群或大规模并行处理(MPP)系统),或者远程,或远程分布式(例如通过局域网(LAN)和/或广域网(WAN)来耦合的多个处理器),或其组合。提供所述存储系统102的存储设备可能是所述执行环境108本地的存储设备,例如,存储在被连接到托管所述执行环境108的计算机的存储介质(例如,硬盘驱动器)上;或可能是所述执行环境108远程的存储设备,例如,被托管在通过远程连接(例如,由云计算基础架构提供)与托管所述执行环境108的计算机进行通讯的远程系统上。
图2A示出控制流图200的示例,其限定了将被施加于由计算系统100执行的一组任务上的部分排序。由控制流图200限定的部分排序被编码成存储的任务说明104。在一些实施方式中,用户112选择将被包含在控制流图中的各类节点,并且使用表示被连接节点之间的排序约束的链路来连接这些节点中的一些。一类节点是任务节点,由图2A中的直角方块表示。每个任务节点表示待执行的不同任务。从第一任务节点(在有向链路的开始处)连接至第二任务节点(在有向链路的终点处)的有向链路施加这样的排序约束:在第二节点的任务可以开始之前第一节点的任务必须完成。另一类节点是结节点,由图2A中的圆角方块表示。除非控制流图包括条件行为,否则结节点仅仅用于施加排序约束。具有单个输入链路和多个输出链路的结节点施加排序约束,使得在由输出链路连接的任务节点中的任何任务可以开始之前由输入链路连接的任务节点中的任务必须完成。具有多输入链路和单个输出链路的结节点施加排序约束,使得在由输出链路连接的任务节点中的任务可以开始之前由输入链路连接的任务节点中的所有任务必须完成。任务节点还可以是多个输入链路的终点,其施加排序约束,使得在该任务节点中的任务可以开始之前由输入链路连接的任务节点中的所有任务必须完成。利用条件行为,具有多个输入链路的任务节点还提供与具有多个输入的结节点不同的逻辑行为,在下文进行更详细地的描述。
在构建控制流图之后,编译器106编译任务说明104(其中任务说明104对控制流图表示的任务信息和排序信息进行编码),并且产生用于执行任务的指令。该指令可以是准备好被执行的低级机器代码的形式,或是更高级代码的形式(其被进一步编译为提供最终将被执行的低级机器代码)。所生成的指令包括每个任务节点的子程序(“任务子程序”)、以及每个结节点的子程序(“结点子程序”)。每个任务子程序包括用于执行相应任务的任务部分(也称为任务体)。任务节点包括待执行的相应任务的一些描述,使得编译器能够生成适当的任务部分。例如,在一些实施方式中,任务节点识别将被调用的特定函数、将要运行的程序、或包含在任务部分中的可执行代码。一些任务子程序还可以包括控制部分,所述控制部分控制控制流图中另一个节点的后续子程序的执行。因为在控制完成之后不需要将其传至任何后续任务,所以未被连接至任何下游节点的任务节点的任务子程序可以不需要控制部分。因为结节点的目的是对控制流指定约束,所以每个结点子程序包括控制部分作为其主体。
包含在控制部分中的函数的示例是“chain(链)”函数,其基于与控制流图的节点相关的状态信息确定是否生成用于执行后续节点的子程序的新进程。chain函数的参数(argument)识别后续节点。下表示出被包含在由编译器为控制流图200的每个节点编写的子程序中函数的示例,其中任务子程序的任务部分由函数调用T#()表示,并且子程序的剩余部分被视为表示控制部分。(在其他示例中,任务部分可以包括多个函数调用,且在最后一个函数返回之后表示任务完成)。结点子程序不包括任务部分,并且由此完全由控制部分组成。在这个示例中,单独的函数调用以它们被调用的顺序由分号隔开。
表1
在任务说明104被编译之后,计算系统100将生成的子程序加载至执行环境108的存储器系统110中。当调用特定子程序时,程序计数器将被设置为在存储有子程序的存储器系统110的一部分地址空间起点处的对应地址。
在被调度的时刻,或响应于用户输入或预定事件,计算系统100开始执行表示控制流图的根的至少一个所加载子程序。例如,对于控制流图200,计算系统100生成用于执行任务节点T1的任务子程序的进程。当子程序开始执行时,该进程将首先调用用于执行任务节点T1的任务的任务部分,然后在任务部分返回之后(表明任务节点T1的任务已经完成),进程将调用子程序的控制部分中的chain函数。chain函数所使用的用以确定是否生成用于执行特定节点的子程序的新进程的状态信息是这样的信息,该信息捕捉(capture)使用该特定节点作为参数调用的之前chain函数的历史。在下文进行更详细地的描述。
这个历史信息可以被保持在与不同节点相关联的激活计数器中。计数器的值可以被存储在,例如,一部分存储器(memory)系统110中或者存储在其他工作贮存器(storage)中。在生成第一进程之前,每个节点的激活计数器的值被初始化为到该节点的输入链路的数目。因此,对于控制流图200,具有被初始化为以下值的六个激活计数器。
节点 激活计数器值
任务节点T1 0
结节点J1 1
任务节点T2 1
任务节点T3 1
结节点J2 2
任务节点T4 1
表2
由于任务节点T1不具有任何输入链路,其激活计数器被初始化为零。可替代地,对于不具有任何输入链路的初始节点,无需具有与该节点相关联的激活计数器。通过输入链路连接的不同节点的控制部分将减小下游链接节点的激活计数器并且将基于减小的值来确定动作。在一些实施方式中,在减小操作(例如,原子“减小-和-测试”操作)之前或之后,访问计数器的函数可以利用原子地减小计数器且读取计数器的值的原子操作(atomicoperation)。在一些系统中,由系统的本地指令来支持这种操作。可替代地,取代将计数器的值减小至零,计数器可以在零处开始,并且函数可以增大计数器的值直到达到被初始化为到节点的输入链路的数目的预定阈值(例如,使用原子“增大-和-测试”操作)。
对chain函数“chain(N)”的调用减小了节点N的激活计数器,并且如果减小后的值为零,则chain函数通过新生成的进程来触发节点N的子程序的执行,然后返回。如果减小后的值大于零,则chain函数简单地返回而不触发新子程序的执行或生成新进程。如对于表1的结节点J1的结点子程序一样,子程序的控制部分可以包括对chain函数的多个调用。在控制部分中最后一个函数返回之后,执行子程序的进程可以退出,或者对于一些函数调用(例如,对于下文描述的“chainTo(链至)”函数),该进程继续执行另一个子程序。新进程的有条件生成使得能够根据期望的部分排序来(潜在同时地)执行任务子程序,而不需要切换至调度器进程或从调度器切换以管理新进程的生成。
对于表1的子程序,在任务子程序T1的任务部分之后对chain函数“chain(J1)”的调用返回节点J1的激活计数器中从1减小至0的结果,使得执行结点子程序,其包括对chain函数“chain(T2)”和“chain(T3)”的调用。这些调用中的每个导致节点T2和T3的相应激活计数器从1减小到0,从而能够执行节点T2和T3的任务子程序。两个任务子程序都包括调用“chain(J2)”的控制部分,其减小了节点J2的激活计数器。不论节点T2和T3的任务体中哪一个首先结束,都将导致调用将节点J2的激活计数器从2减小到1的chain函数。其次结束的任务部分将调用使节点J2的激活计数器从1减小到0的chain函数。由此,只有要完成的最后一个任务将导致执行节点J2的结点子程序,其导致对chain函数“chain(T4)”的最后一次调用并且将节点T4的激活计数器从1减小到0,这初始化了节点T4的任务子程序的执行。在节点T4的任务部分返回之后,因为节点T4的任务子程序不存在控制部分,所以控制流完成。
在表1的子程序的示例中,为控制流图200中每个节点的子程序生成新进程。尽管具有控制部分的每个进程(其中控制部分自身确定是否生成新进程而不需要中央任务监控或调度进程)的子程序获得了一些效率,通过对控制部分进行一定的编译器优化可以得到更高的效率。例如,在一种编译器优化中,如果存在对第一子程序的控制部分中chain函数的单次调用,则在执行第一子程序的相同进程中可以执行(当激活计数器达到零时)下一个子程序(即,该chain函数的参数)-无需生成新进程。实现上述的一个方式是对于节点的最后一个输出链路,编译器明确地生成不同的函数调用(例如,“chainTo”函数而不是“chain”函数)。除了取代当激活计数器是零时生成新进程来执行其参数的子程序之外,chainTo函数与chain函数类似,chainTo函数使得相同进程来执行其参数的子程序。如果节点具有单个输出链路,则其编译后的子程序将具有单次调用chainTo函数的控制部分。如果节点具有多个输出链路,则其编译后的子程序将具有一次或多次调用chain函数且单次调用chainTo函数的控制部分。这降低了在独立进程中生成的子程序的数目和它们相关的启动开销。表3示出使用这个编译器优化,对于控制流图200将产生的子程序的示例。
节点 子程序
任务节点T1 T1();chainTo(J1)
结节点J1 chain(T2);chainTo(T3)
任务节点T2 T2();chainTo(J2)
任务节点T3 T3();chainTo(J2)
结节点J2 chainTo(T4)
任务节点T4 T4()
表3
在表3的子程序的示例中,第一进程执行节点T1和J1的子程序,然后生成新进程来执行节点T2的子程序,同时第一进程继续执行节点T3的子程序。不论这两个进程中的哪一个首先从它们相应任务部分返回,则其首先减小(从2到1)结节点J2的激活计数器,然后退出。从其任务部分返回的第二进程将结节点J2的激活计数器从1减小到0,然后通过执行结节点J2的子程序继续,其是函数调用“chainTo(T4)”,并且最后为任务节点T4的子程序。图2B示出在节点T3的任务在节点T2的任务之前结束的情况下,当第一和第二进程执行控制流图200中不同节点的子程序时,第一和第二进程的生命周期的示例。沿着表示进程的线的点对应于不同节点(由虚线连接至点)子程序的执行。点之间线段的长度不一定与流逝的时间成比例,而只是旨在示出执行不同子程序和生成新进程的相对顺序。
可以潜在地提高效率的另一修改示例是延迟生成新进程,直到满足阈值,这表明特定子程序可能受益于并发性。如果每个子程序都需要花费大量时间来完成,则由不同进程来同时执行多个子程序是尤其有利的。另外,如果子程序中的任意子程序与其他子程序性相比花费相对少量的时间来完成,则可以利用另一个子程序来连续地执行子程序,而不浪费大量效率。上述延迟生成机制允许由同时运行进程来执行花费大量时间且可以一起执行的多个任务,而且尝试阻止为较短任务生成新进程。
在使用延迟生成的chain函数的可替代实施方式中,chain函数(像chainTo函数)使得由相同的进程来开始执行其参数的子程序。但是,与chainTo函数不同,计时器跟踪它花费在执行子程序上的时间,并且如果超过阈值时间,则chain函数生成新进程来继续执行子程序。第一进程可以继续,就像子程序已经完成一样,并且第二进程可以在第一进程中断处接管的子程序的执行。可以被用来完成上述的一个机制是使得第二进程继承第一进程的子程序栈框架(stack frame)。被执行的子程序的栈框架包括指向特定指令的程序计数器、以及包含与子程序执行相关的其他值(例如,局部变量和寄存器值)。在这个示例中,T2的任务子程序的栈框架将包括返回指针,返回指针使得在完成T2的任务子程序之后,进程返回至J1的结点子程序。当延迟生成计时器溢出时,生成新进程且将其与T2的任务子程序的当前栈框架相关联,并且第一进程立即返回至J1的结点子程序(以调用“chainTo(T3)”)。因为在完成T2的任务子程序之后新进程不需要返回至J1的结点子程序,所以在继承的栈框架中的返回指针被移除(即使其变为null(空))。所以,当任务是快(相对于可配置阈值)的情况,延迟生成使得能够执行后续任务的子程序而没有生成新进程的开销,并且对于通过继承现有栈框架而使得任务更长的情况,延迟生成降低生成新进程的开销。
图2C示出在节点T2的任务比延迟生成阈值长的情况下,当第一和第二进程执行控制流图200中不同节点的子程序时,第一和第二进程的生命周期的示例。当达到生成阈值时,进程1生成进程2,其继承执行节点T2的任务的子程序的栈框架且继续执行子程序。在这个示例中,在节点T2的任务(由进程1开始且由进程2完成)结束之前,节点T3的任务(由进程1执行)结束。所以,在这个示例中,进程1将J2的激活计数器从2减小到1(并且然后退出),且进程2将J2的激活计数器从1减小到0,导致进程2执行任务节点T4的任务。在这个示例中,在确定这种并发性将有益于整体效率之后,允许同时执行节点T2的任务和节点T3的任务。
图2D示出在节点T2的任务比延迟生成阈值短的情况下,当单个进程执行控制流图200中不同节点的子程序时,单个进程的生命周期的示例。在这个示例中,在节点T3的任务(由进程1执行)结束之前,节点T2的任务(也由进程1执行)结束。所以,在这个示例中,进程1在完成节点T2的任务之后将J2的激活计数器从2减小到1,并且进程1在完成节点T3的任务之后将J2的激活计数器从1减小到0,使得进程1执行任务节点T4的任务。在这个示例中,在确定可以快速完成节点T2的任务之后,牺牲节点T2和节点T3任务的同时执行,避免生成第二进程,从而获得效率。
可以包含在控制流图中的另一类节点是条件节点,由图3示出的控制流图300中的圆圈表示。条件节点限定用于确定是否执行任务节点(该任务节点被连接至条件节点的输出)的任务的条件。如果在运行期间所限定的条件为真,则控制流跳过该条件节点继续向下游进行,但是如果在运行期间所限定的条件为假,则控制流不会跳过该条件节点继续进行。如果条件为假,且如果控制流图存在到条件节点下游那些任务节点(且它们自身没有被其它假条件节点阻挡)的其他路径,则只执行条件节点下游那些任务节点的任务。
编译器为每个条件节点产生“条件子程序”,且还使用由条件节点限定的条件来修改条件节点下游的其他一些节点的子程序。例如,编译器可以为将在运行期间应用的“跳过机制”生成指令以遵循由控制流图限定的控制流。在跳过机制中,每个节点都有相关联的“跳过标志”,其控制是否执行相应的任务部分(如果有的话)。如果设置了跳过标志,则任务部分的执行被抑制(节点处于“抑制”状态),并且可以通过适当的控制代码(其由编译器放置在控制部分中)将这个抑制传播至其他任务。在前面的示例中,任务子程序的任务部分先于控制部分。在以下示例中,一些任务子程序的控制部分包括在任务部分之前出现的控制代码(也称为“序言(prologue)”)以及在任务部分之后出现的控制代码(也称为“后记(epilogue)”)。例如,为了实现这个跳过机制,在序言中(即,在任务部分之前执行的代码),编译器包括条件指令(例如if(如果)语句),以及对使用识别下游节点的参数来调用的“跳过函数”的调用。在后记中(即,在任务部分之后执行的代码),编译器包括对chain或chainTo函数的调用。在一些情况下,可以只执行序言,并且由于由跳过标志的值表示的存储状态,任务部分和后记可以被跳过。表4示出为控制流图300生成子程序的示例。
表4
与chain和chainTo函数类似,跳过函数“skip(N)”减小其参数(节点N)的激活计数器,并且如果减小后的值为0,则执行相应的子程序。在这个示例中,通过继续使用相同的进程而不生成新的进程来遵循chainTo函数的行为,然而,编译器可以使用表现为chain和chainTo函数的两个版本跳过函数来以相似的方式控制任务生成。编译器为条件节点的下游节点生成子程序,使得如果设置了正在执行其子程序的节点的跳过标志(即,评估为布尔真值),则其对下游节点调用跳过而不调用任务部分,并且如果跳过标志被清除(即,评估为布尔假值),则其调用任务部分(如果该节点是任务节点)且对下游节点调用chain。可替代地,编译器可以默认包括子程序的控制部分中的条件语句,而无需确定哪个节点是条件节点的下游。特别地,对于每个节点的子程序,可以默认包括用以检查跳过标志的“if”语句,无需编译器确定是否包括该“if”语句(尽管这可能导致对跳过标志的不必要检查)。
如果控制流图中存在条件节点,则具有多个输入的节点在运行期间获得基于节点类型的逻辑行为。具有多个输入链路和单个输出链路的结节点对应于逻辑“或”操作,使得如果由输出链路连接的输出节点使它的子程序为chain调用(且不是跳过调用)的参数,则由输入链路连接的至少一个输入节点必须使它的子程序执行chain调用(且不是跳过调用)。具有多个输入链路和一个输出链路的任务节点对应于逻辑“与”操作,使得如果该任务节点的子程序为chain调用(且不是跳过调用)的参数,则由输入链路连接的所有输入节点必须使它们的子程序执行chain调用(且不是跳过调用)。
为了确保这个逻辑行为,设置与节点相关的跳过标志,并且在运行期间根据预定规则将其清除。在执行控制流图中节点的任何子程序之前出现的初始化阶段,提供跳过标志的初始值,并且该初始值取决于节点的类型。编译器还使用不同版本的跳过函数和chain函数,其根据节点的类型具有不同的行为。如下示出用以改变节点N的跳过标志的预定规则组、以及编译器使用的不同版本函数的行为的一个示例。
·对于多输入结节点(OR(或)操作):初始设置跳过标志,skip_OR(N)不改变跳过标志,chain_OR(N)清除跳过标志
·对于多输入任务节点(与操作):初始清除跳过标志,skip_AND(N)设置跳过标志,chain_AND(N)不改变跳过标志
·对于单输入节点:初始设置跳过标志,skip(N)不改变跳过标志,chain(N)清除跳过标志
关于跳过标志,chainTo函数的行为与chain函数是相同的。对于单输入节点,或操作和与操作的行为是等价的,并且两者都可以被使用(诸如这个示例中或操作的行为)。对于此组规则,(多个)起始节点(即,不具有任何输入链路的节点)使得它们的跳过标志被清除(如果其初始值尚未被清除)。
对于控制流图300,考虑节点C1的条件为真、节点C2的条件为假、并且在节点C2条件检查完成之前节点T3的任务结束的情况:节点T3的子程序将遵循chain逻辑(与跳过逻辑相反),其清除节点J2的跳过标志,并且减小节点J2的激活计数器(从2到1);然后节点T4的子程序遵循跳过逻辑(其不改变跳过标志),并且减小节点J2的激活计数器(从1到0),由于节点J2的跳过标志被节点T3的子程序清除了,所以这导致chain(T5)。
其他规则也是可能的。如下示出用以改变节点N的跳过标志的预定规则组、以及编译器使用的不同版本函数的行为的另一个示例。
·对于结节点:初始设置跳过标志,skip_J(N)不改变跳过标志,chain_J(N)清除跳过标志
·对于任务节点或条件节点:初始清除跳过标志,skip(N)设置跳过标志,chain(N)不改变跳过标志
对于此组规则,(多个)起始节点(即,不具有任何输入链路的节点)也将使得它们的跳过标志被清除(如果其初始值尚未被清除)。
编译器可以基于控制流图的分析可选地执行子程序的控制部分中条件语句或其他指令的多种优化。例如,根据控制流图300,可以确定不管条件节点C1和C2的条件是真还是假,因为在结节点J1与结节点J3之间存在将最终导致执行任务节点T5的任务的链路,所以任务节点T5的任务不会被跳过。所以,编译器能够为任务节点T5生成子程序,其避免了检查其跳过标志,从而简单地调用其任务部分T5()。编译器还可以进行其他优化,例如,在条件节点之后跳过控制流图的整个部分的情况下,只要在适当地处理被跳过的部分之后有任何其他输入了下游节点,就省去中间跳过标志检查和跳过函数调用(即,多次减小下游节点的计数器,该次数为在包含对被跳过部分的中间调用情况下该下游节点的计数器将被减小的次数)。
图4示出包括多输入任务节点T3的简单控制流图400,具有来自分别沿袭条件节点(分别为C1和C2)的任务节点T1和T2的输入链路。在这个示例中,任务节点T3对应于逻辑与操作,使得当节点T3的任务被执行时,节点T1和T2的任务也必须被执行(而不是跳过)。表5示出为控制流图400生成的子程序的示例。
表5
在一些实施方式中,结节点(或其它节点)可以被配置为根据到节点的输入的特性来提供各种逻辑操作。例如,当所有的输入被指定为“必需”输入时,节点可以被配置为提供逻辑与操作,以及当所有的输入被指定为“可选”输入时,节点可以被配置为提供逻辑或操作。如果一些输入被指定为“必需”输入且一些输入被指定为“可选”输入,则可以使用一组预定规则来说明将由节点执行的逻辑操作的组合。
上述任务控制技术可以使用执行适当软件的计算系统来实施。例如,软件包括在一个或多个已编程或可编程计算机系统(可以具有各种架构,诸如分布式、客户端/服务器、或网格式)上执行的一个或多个计算机程序中的程序,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、以及至少一个用户接口(用于使用至少一个输入设备或端口来接收输入,以及用于使用至少一个输出设备或端口来提供输出)。该软件可以包括大型程序的一个或多个模块,例如,该大型程序提供与数据流图的设计、配置和执行相关的服务。该程序的模块(例如,数据流图的元件)可以被实施为数据结构或者符合在数据库中存储的数据模型的其它经过组织的数据。
该软件可以被提供在诸如CD-ROM或其他计算机可读介质之类的有形永久存储介质(例如,其可以被通用或专用计算机系统或设备读取)上,或者通过网络的通信介质递送(例如,被编码成传播信号)到执行该软件的计算机系统的有形永久介质。一些或全部处理可以在专用计算机上执行,或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的专用硬件来执行。该处理可以以分布方式实施,在该分布方式中,由该软件指定的不同的计算部分由不同的计算元件执行。每个这样的计算机程序被优选地存储在或下载到可由通用或专用可编程计算机读取的存储设备的计算机可读存储介质(例如,固态存储器或介质、或者磁或光介质),用于在计算机读取该存储介质或设备时配置和操作该计算机,以执行此处所描述的处理。也可以考虑将本发明的系统实施为有形永久存储介质,其配置有计算机程序,其中,如此配置的存储介质使得计算机以特定和预定义的方式操作以执行此处所描述的一个或多个处理步骤。
已经对本发明的多个实施例进行了描述。然而,应当理解,前面的描述旨在说明而非限制本发明的范围,本发明的范围由以下权利要求书的范围来限定。因此,其它实施例也落在以下权利要求书的范围内。例如,在不脱离本发明的范围的情况下可进行各种修改。此外,上述的一些步骤可以是顺序独立的,因此可以以不同于所述的顺序来执行。

Claims (14)

1.一种执行任务的方法,所述方法包括:
在至少一个存储器中存储用于执行多个任务的指令,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行该任务的任务部分和控制后续任务的子程序执行的控制部分;并且
由至少一个处理器执行至少一些所存储的子程序,所述执行包括:
生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且
在所述第一任务部分返回之后,调用所述第一控制部分中所包括的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程,所述第二子程序不同于所述第一子程序。
2.根据权利要求1所述的方法,其中所述函数被配置为:
减小与所述第二子程序相关的计数器,并且基于所述计数器的值确定是否初始化所述第二子程序的执行。
3.根据权利要求1或2所述的方法,其中当使用识别对应于所述第二子程序的第二任务的参数来调用函数时,所述函数被配置为基于状态信息来确定是否初始化所述第二子程序的执行,所述状态信息捕捉之前以识别所述第二任务的参数来调用该函数的历史。
4.根据权利要求3所述的方法,其中所述函数是多个不同函数中的一个,并且所述状态信息捕捉之前以识别所述第二任务的参数来调用所述多个不同函数中任意函数的历史。
5.根据权利要求1所述的方法,其中所述函数被配置为:在所述第一进程中初始化所述第二子程序的执行,并且响应于所述第二子程序的执行时间超过预定阈值,生成所述第二进程以继续执行所述第二子程序。
6.根据权利要求5所述的方法,其中所述函数被配置为将与所述第一进程相关的栈框架提供给所述第二进程。
7.根据权利要求5或6所述的方法,其中所述函数被配置为在生成所述第二进程之后返回以使得所述第一进程继续与所述第二进程同时执行。
8.根据权利要求1所述的方法,其中所述第一控制部分包括确定所述第一任务部分是否被调用的逻辑。
9.根据权利要求8所述的方法,其中所述逻辑基于与所述第一任务相关的标志的值来确定所述第一任务部分是否被调用。
10.根据权利要求1所述的方法,其中所述第二子程序对应于第二任务,并且所述第一控制部分至少部分基于指定多个任务中至少部分排序的排序信息,所述多个任务包括所述第一任务和所述第二任务。
11.根据权利要求10所述的方法,其中所述排序信息包括控制流图,所述控制流图包括在表示相应任务的节点的各对之间的有向边,其中从上游节点到下游节点的有向边表明在所述部分排序中由所述上游节点表示的所述任务先于由所述下游节点表示的所述任务。
12.一种存储在计算机可读存储介质上的计算机程序,用于执行任务,所述计算机程序包括用于使计算系统执行下述步骤的指令:
存储用于执行多个任务的指令,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行该任务的任务部分和控制后续任务的子程序执行的控制部分;并且
执行至少一些所存储的子程序,所述执行包括:
生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且
在所述第一任务部分返回之后,调用所述第一控制部分中所包括的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程,所述第二子程序不同于所述第一子程序。
13.一种用于执行任务的计算系统,所述计算系统包括:
至少一个存储器,用于存储执行多个任务的指令,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行该任务的任务部分和控制后续任务的子程序执行的控制部分;以及
至少一个处理器,被配置为执行至少一些所存储的子程序,所述执行包括:
生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且
在所述第一任务部分返回之后,调用所述第一控制部分中所包括的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程,所述第二子程序不同于所述第一子程序。
14.一种用于执行任务的计算系统,所述计算系统包括:
存储用于执行多个任务的指令的装置,所述指令对于至少一些所述任务中的每一个任务包括相应的子程序,该子程序包括用于执行该任务的任务部分和控制后续任务的子程序执行的控制部分;以及
用于执行至少一些所存储的子程序的装置,所述执行包括:
生成用于执行第一任务的第一子程序的第一进程,所述第一子程序包括第一任务部分和第一控制部分;并且
在所述第一任务部分返回之后,调用所述第一控制部分中所包括的至少一个函数,该函数确定是否生成用于执行第二子程序的第二进程,所述第二子程序不同于所述第一子程序。
CN201811207891.2A 2013-04-23 2014-04-23 控制由计算系统执行的任务 Active CN109614170B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361815052P 2013-04-23 2013-04-23
US61/815,052 2013-04-23
CN201480023408.9A CN105164639B (zh) 2013-04-23 2014-04-23 控制由计算系统执行的任务

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480023408.9A Division CN105164639B (zh) 2013-04-23 2014-04-23 控制由计算系统执行的任务

Publications (2)

Publication Number Publication Date
CN109614170A true CN109614170A (zh) 2019-04-12
CN109614170B CN109614170B (zh) 2022-02-25

Family

ID=50884503

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201480023375.8A Active CN105164638B (zh) 2013-04-23 2014-04-23 控制由计算系统执行的任务
CN201480023408.9A Active CN105164639B (zh) 2013-04-23 2014-04-23 控制由计算系统执行的任务
CN201811207891.2A Active CN109614170B (zh) 2013-04-23 2014-04-23 控制由计算系统执行的任务

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201480023375.8A Active CN105164638B (zh) 2013-04-23 2014-04-23 控制由计算系统执行的任务
CN201480023408.9A Active CN105164639B (zh) 2013-04-23 2014-04-23 控制由计算系统执行的任务

Country Status (8)

Country Link
US (3) US9665396B2 (zh)
EP (3) EP2989541B1 (zh)
JP (3) JP6469083B2 (zh)
KR (2) KR102251932B1 (zh)
CN (3) CN105164638B (zh)
AU (3) AU2014257135B2 (zh)
CA (3) CA2909748C (zh)
WO (2) WO2014176310A2 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665396B2 (en) 2013-04-23 2017-05-30 Ab Initio Technology Llc Controlling tasks performed by a computing system using instructions generated to control initiation of subroutine execution
US9342415B2 (en) * 2014-07-14 2016-05-17 International Business Machines Corporation Run-to-completion thread model for software bypass fail open for an inline intrusion protection system
JP6467500B2 (ja) 2014-09-02 2019-02-13 アビニシオ テクノロジー エルエルシー グラフに基づくプログラムの仕様内の構成要素の関連するタスクを制御するための、それらの構成要素の実行状態の管理
CA2959534C (en) * 2014-09-02 2021-06-29 Ab Initio Technology Llc Compiling graph-based program specifications
SG11201701662XA (en) 2014-09-02 2017-04-27 Ab Initio Technology Llc Visually specifying subsets of components in graph-based programs through user interactions
US9760406B2 (en) 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
US9933918B2 (en) 2014-09-02 2018-04-03 Ab Initio Technology Llc Specifying control and data connections in graph-based programs
CN105988907B (zh) * 2015-01-29 2019-04-02 深圳市腾讯计算机系统有限公司 业务监控方法和装置
US10229150B2 (en) * 2015-04-23 2019-03-12 Splunk Inc. Systems and methods for concurrent summarization of indexed data
US11093878B2 (en) * 2015-07-01 2021-08-17 Oracle International Corporation System and method for providing temporal dependencies between tasks
KR101767418B1 (ko) * 2015-10-21 2017-08-11 현대오트론 주식회사 임베디드 운영체제에서 로직의 우선순위 보장 방법 및 그 장치
CN105653905B (zh) * 2015-12-28 2018-07-24 西北大学 一种基于api安全属性隐藏与攻击威胁监控的软件保护方法
US10152349B1 (en) * 2016-09-27 2018-12-11 Juniper Networks, Inc. Kernel scheduling based on precedence constraints and/or artificial intelligence techniques
US10261799B2 (en) * 2017-02-28 2019-04-16 International Business Machines Corporation Programmatic implicit multithreading
KR101867866B1 (ko) * 2017-03-23 2018-06-18 주식회사 노트스퀘어 프로그램의 동적 최적화 방법 및 장치
CN108519915A (zh) * 2018-04-12 2018-09-11 北京邮电大学 流量任务调度方法和装置
CN108874394A (zh) * 2018-04-17 2018-11-23 上海达野智能科技有限公司 机器人用户程序的解释方法及解释装置
CN109656568B (zh) * 2018-12-28 2022-04-05 黑龙江省工业技术研究院 按需的可约程序控制流图图可达性索引方法
US10817220B2 (en) * 2019-01-31 2020-10-27 EMC IP Holding Company LLC Sharing processor cores in a multi-threading block i/o request processing data storage system
CN111027196B (zh) * 2019-12-03 2023-04-28 南方电网科学研究院有限责任公司 一种电力设备的仿真分析任务处理方法、装置及存储介质
US11080111B1 (en) * 2020-02-24 2021-08-03 Nvidia Corporation Technique for sharing context among multiple threads
CN114237769A (zh) * 2021-12-14 2022-03-25 北京人大金仓信息技术股份有限公司 一种程序的执行方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020152256A1 (en) * 2000-12-28 2002-10-17 Gabriel Wetzel Method and device for reconstructing the process sequence of a control program
CN101446909A (zh) * 2007-11-30 2009-06-03 国际商业机器公司 用于管理任务事件的方法和系统
CN102708053A (zh) * 2012-04-27 2012-10-03 北京邮电大学 程序路径中确定函数调用的上下文环境影响的方法
CN102819218A (zh) * 2012-07-19 2012-12-12 西安交通大学 基于事件控制函数的离散事件系统监控器及其控制方法

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471622A (en) 1989-10-04 1995-11-28 Paralogic, Inc. Run-time system having nodes for identifying parallel tasks in a logic program and searching for available nodes to execute the parallel tasks
US5394549A (en) 1992-12-17 1995-02-28 International Business Machines Corporation Task spawning responsive to relational database conditions and operations
CA2095311A1 (en) 1993-04-30 1994-10-31 Richard E. Swagerman Conversation management routine for co-operative processing applications
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
GB2335051B (en) 1998-05-19 2000-01-19 Bookham Technology Ltd Optical device for splitting up a multi-wavelength light beam
US6378066B1 (en) * 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
US6823517B1 (en) 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US6316958B1 (en) * 2000-05-16 2001-11-13 Xilinx, Inc. Programmable logic device with adjustable length delay line
US7685602B1 (en) * 2000-06-05 2010-03-23 Teradata Us, Inc. Controlling software components in a multi-node processing system
US7167850B2 (en) * 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
JP2004326486A (ja) * 2003-04-25 2004-11-18 Matsushita Electric Ind Co Ltd タスク管理装置
US7467383B2 (en) 2004-03-08 2008-12-16 Ab Initio Software Llc System for controlling task execution using a graphical representation of task dependency
JP2005258920A (ja) 2004-03-12 2005-09-22 Fujitsu Ltd マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置
EP1783604A3 (en) * 2005-11-07 2007-10-03 Slawomir Adam Janczewski Object-oriented, parallel language, method of programming and multi-processor computer
JP2007193529A (ja) * 2006-01-18 2007-08-02 Matsushita Electric Ind Co Ltd 半導体集積回路の高位合成方法
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
KR20080068385A (ko) * 2007-01-19 2008-07-23 슈어소프트테크주식회사 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
US20080282246A1 (en) * 2007-05-07 2008-11-13 Danny Dolev Compiler aided ticket scheduling of tasks in a computing system
CN101821721B (zh) * 2007-07-26 2017-04-12 起元技术有限责任公司 具有误差处理的事务型基于图的计算
US8589925B2 (en) * 2007-10-25 2013-11-19 Microsoft Corporation Techniques for switching threads within routines
CN101971165B (zh) * 2008-02-26 2013-07-17 起元技术有限责任公司 数据关系的图形表示
WO2009132047A2 (en) * 2008-04-21 2009-10-29 Zytron Corp. Collaborative and proactive defense of networks and information systems
KR20150038758A (ko) * 2009-02-13 2015-04-08 아브 이니티오 테크놀로지 엘엘시 태스크 실행 관리
JP5390947B2 (ja) * 2009-06-10 2014-01-15 日本放送協会 ジョブ管理システム、ジョブ管理装置及びそのプログラム
US8561041B1 (en) * 2009-06-22 2013-10-15 The Mathworks, Inc. Parallel execution of function calls in a graphical model
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US8250576B2 (en) 2009-09-30 2012-08-21 Microsoft Corporation Structured task hierarchy for a parallel runtime
US8572618B2 (en) * 2010-05-07 2013-10-29 Oracle International Corporation Event driven change injection and dynamic extensions to a business process execution language process
US8555243B2 (en) * 2010-07-30 2013-10-08 National Instruments Corporation Generating and debugging timing accurate simulations in a graphical specification and constraint language
JP2012108576A (ja) * 2010-11-15 2012-06-07 Toyota Motor Corp マルチコアプロセッサ、処理実行方法、プログラム
US20130110576A1 (en) * 2011-10-28 2013-05-02 Infosys Limited System and method for checking the conformance of the behavior of a process
US20130259137A1 (en) * 2012-03-30 2013-10-03 Google Inc. System and Method for Multi-Core Hardware Video Encoding And Decoding
US9832068B2 (en) * 2012-12-17 2017-11-28 Microsoft Technology Licensing, Llc Reachability-based coordination for cyclic dataflow
US9286119B2 (en) * 2013-02-13 2016-03-15 Nvidia Corporation System, method, and computer program product for management of dependency between tasks
US9665396B2 (en) 2013-04-23 2017-05-30 Ab Initio Technology Llc Controlling tasks performed by a computing system using instructions generated to control initiation of subroutine execution
CN103559044A (zh) * 2013-11-20 2014-02-05 无锡儒安科技有限公司 无线传感器网络控制代码形式化方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020152256A1 (en) * 2000-12-28 2002-10-17 Gabriel Wetzel Method and device for reconstructing the process sequence of a control program
CN101446909A (zh) * 2007-11-30 2009-06-03 国际商业机器公司 用于管理任务事件的方法和系统
CN102708053A (zh) * 2012-04-27 2012-10-03 北京邮电大学 程序路径中确定函数调用的上下文环境影响的方法
CN102819218A (zh) * 2012-07-19 2012-12-12 西安交通大学 基于事件控制函数的离散事件系统监控器及其控制方法

Also Published As

Publication number Publication date
CN109614170B (zh) 2022-02-25
JP6761878B2 (ja) 2020-09-30
CN105164638B (zh) 2019-09-27
EP2989540A2 (en) 2016-03-02
KR20160004335A (ko) 2016-01-12
KR20160004334A (ko) 2016-01-12
WO2014176310A4 (en) 2015-04-23
CA3125705C (en) 2022-02-15
EP2989541B1 (en) 2021-07-07
WO2014176313A1 (en) 2014-10-30
JP2019071120A (ja) 2019-05-09
JP6469084B2 (ja) 2019-02-13
US20140317629A1 (en) 2014-10-23
CA2909751C (en) 2021-02-16
EP2989540B1 (en) 2021-06-23
US20140317632A1 (en) 2014-10-23
CN105164638A (zh) 2015-12-16
US10565005B2 (en) 2020-02-18
AU2018203641A1 (en) 2018-06-14
US10489191B2 (en) 2019-11-26
EP2989541A1 (en) 2016-03-02
AU2014257135B2 (en) 2020-01-16
CA2909751A1 (en) 2014-10-30
CA2909748C (en) 2021-09-21
WO2014176310A3 (en) 2015-03-05
CA2909748A1 (en) 2014-10-30
EP3113017B1 (en) 2018-04-18
KR102251932B1 (ko) 2021-05-13
AU2018203641B2 (en) 2019-09-26
US20170024250A1 (en) 2017-01-26
KR102305084B1 (ko) 2021-09-24
CN105164639B (zh) 2018-11-09
AU2014257135A1 (en) 2015-11-12
US9665396B2 (en) 2017-05-30
EP3113017A1 (en) 2017-01-04
JP2016520911A (ja) 2016-07-14
CA3125705A1 (en) 2014-10-30
WO2014176310A2 (en) 2014-10-30
CN105164639A (zh) 2015-12-16
JP2016520912A (ja) 2016-07-14
JP6469083B2 (ja) 2019-02-13
AU2014257132B2 (en) 2018-03-29
AU2014257132A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
CN105164639B (zh) 控制由计算系统执行的任务
KR101413049B1 (ko) 그래프 기반 계산에서의 계산 자원의 관리
CA2558242C (en) Controlling task execution using a graphical representation of task dependency
CN108139898B (zh) 数据处理图编译
KR20220145848A (ko) 집적 회로 아키텍처 내에서 최적화된 데이터흐름을 위한 지능형 버퍼 추적 시스템 및 방법
CN104572260A (zh) 用于实现事务内存区域提升的代码版本控制的方法和设备
US10564948B2 (en) Method and device for processing an irregular application
CN104050034A (zh) 用于静态调度处理器的无阻塞执行的设备和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40007507

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant