数据处理方法、装置和系统的制作方法

xiaoxiao2020-10-23  11

数据处理方法、装置和系统的制作方法
【技术领域】
[0001]本发明实施例涉及操作系统的数据处理技术,尤其涉及数据处理方法、装置和系统。
【背景技术】
[0002]现有技术中,程序向操作系统(Operating system,OS)发送请求,请求操作系统执行一个任务,操作系统会为执行程序所请求的任务分配资源并创建线程,将该任务的参数等载入线程,操作系统会将载入了任务参数的线程放置如调度队列等待操作系统调度用于执行线程的资源。
[0003]若执行中没有异常,当线程执行结束,操作系统会将执行完成的线程所占用的资源释放并将执行结果进行反馈;若在执行线程中出现了异常,线程任务会被重新置入等待队列,直到异常情况消除后,操作系统再次调度这个线程继续执行。
[0004]发明人在研究中发现,操作系统为每个任务创建和释放线程资源的开销较大,尤其是当所执行的任务较多且较小时,为每个任务创建和释放线程资源的开销占总运行时间的比重较大,使得系统资源的利用率降低。

【发明内容】

[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]所述第二解耦单元,还用于将所述任务代码中没有出现异常的等待执行的子任务代码载入到所述预留的硬件线程中继续执行。
[0047]第七方面,本发明实施例提供了一种数据处理系统,包括操作系统,硬件线程池,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括多个硬件线程,其中:
[0048]所述操作系统,用于载入需要执行的任务代码,读取所述任务代码的开始位置预先添加的预留硬件线程指令,接收所述预留硬件线程指令指示的预留硬件线程的请求;所述操作系统在所述硬件线程池中的第一硬件线程申请为预留的硬件线程,所述预留的 硬件线程为执行所述任务代码独占的硬件线程;将所述任务代码载入所述硬件线程池中除第一硬件线程之外的第二硬件线程;其中,所述任务代码中包括多个在代码开始和结束位置分别预先设置有小任务开始标识和小任务结束标识的子任务代码;
[0049]所述第二硬件线程,用于接收所述操作系统载入的需要执行的任务代码;接收所述操作系统在硬件线程池中申请预留的第一硬件线程的标识;当读取到所述任务中所述小任务开始标识,则将所述小任务开始标识之后等待执行的任务代码载入到所述预留的所述第一硬件线程;
[0050]所述预留的第一硬件线程接收被载入的任务代码,其中,所述被载入所述第一硬件线程的任务代码开始位置预先设置有小任务开始标识;执行所述被载入的任务代码,当读取到被载入的任务代码中的所述小任务结束标识,则结束执行,反馈执行结果。
[0051]第八方面,本发明实施例提供了一种数据处理装置,所述数据处理装置包括处理器,通信接口,存储器和通信总线;
[0052]所述处理器、通信接口、存储器通过通信总线完成相互间的通信;
[0053]所述通信接口,用于接收和发送数据;
[0054]所述存储器用于存储程序;
[0055]所述处理器用于执行所述存储器中的所述程序,执行权利要求第一方面以及第一方面的可能实施方式至第二方面以及第二方面可能实施方式中任一所述的方法。
[0056]本发明实施例中,操作系统在接收到预留硬件线程的请求后,将任务代码载入预留的硬件线程,由预留的硬件线程执行后续的任务代码,或者,操作系统将任务代码载入硬件线程进行执行的过程中,当硬件线程读取到了小任务代码标识,则将小任务代码载入到预留的硬件线程进行执行。本发明实施例的方案和现有技术的方案中的操作系统在执线程中的任务代码时为每个任务对应的任务代码创建线程并在执行完任务对应的任务代码后释放对应线程相比,尤其是在任务中包括较多小任务的情况下,大幅度节省了系统的开销,提高了系统资源利用率。
【附图说明】
[0057]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0058]图1为本发明实施例所提供的一种数据处理方法的流程图;
[0059]图2为本发明实施例所提供的另一种数据处理方法的流程图;
[0060]图3为本发明实施例所提供的另一种数据处理方法的流程图;
[0061]图4为本发明实施例提供的另一种数据处理方法的流程示意图;
[0062]图5为本发明实施例提供的另一种数据处理方法的流程示意图;
[0063]图6为本发明实施例提供的一种数据处理装置的结构示意图;
[0064]图7为本发明实施例所提供的另一种数据处理装置的结构示意图;
[0065]图8为本发明实施例所提供的一种数据处理系统的结构示意图;
[0066]图8-1为本发明实施例所提供的数据处理系统对任务代码执行的流程示意图
[0067]图9为本发明实施例提供的一种数据处理装置的结构示意图。
【具体实施方式】
[0068]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0069]本发明实施例所提供的数据处理方法,应用于数据处理系统中,所述数据处理系统中包括操作系统,以及用于执行任务代码的硬件线程资源池,所述操作系统对硬件线程池进行管理;所述硬件线程为用于执行任务代码的物理执行单元,其具体的物理形态可以是芯片或处理器,所述硬件线程池中包括多个硬件线程。
[0070]参见图1,本发明实施例提供一种数据处理方法,应用于数据处理系统中,所述数据处理系统中包括操作系统,以及硬件线程资源,包括:
[0071]步骤101,所述操作系统载入需要执行的任务代码,读取所述任务代码的开始位置预先添加的预留硬件线程指令,接收所述预留硬件线程指令指示的预留硬件线程的请求;;
[0072]所述预留硬件线程的请求是请求所述操作系统为执行所述任务代码预留硬件线程,所述预留的硬件线程为执行所述任务代码独占的硬件线程;
[0073]步骤102,操作系统在硬件线程池中为执行所述任务代码申请预留硬件线程;
[0074]本发明实施例中,所述任务代码为接收到所述预留硬件线程的请求之后需要执行的任务代码;在程序被编译的阶段,编译器在任务代码的开始位置添加“预留硬件线程”的指令,在操作系统对程序进行装载时,会接收到程序向操作系统发送的预留硬件线程的请求;
[0075]其中,所述硬件线程为执行任务代码的物理执行单元或设备;当操作系统在硬件线程资源池中空闲的硬件线程作为执行任务代码的预留线程,所述预留的硬件线程成为独占的状态;
[0076]步骤103,操作系统将所述任务代码载入所述预留的硬件线程,以使预留的硬件线程执行所述被载入的任务代码;
[0077]本发明实施例中,操作系统通过告诉预留的硬件线程要运行的任务代码的地址,所述预留的硬件程序从任务代码地址开始执行任务;
[0078]步骤104,操作系统获得所述预留硬件线程的执行结果;
[0079]其中,操作系统获得所述预留硬件线程的执行结果,仅仅是逻辑上的描述,并不限于所述预留硬件线程在执行完后返回给操作系统的结果,还可以是所述预留硬件线程将执行完任务后,将执行结果进行输出,存放在指定变量,例如内存或寄存器中后,或者仅仅是标识出任务代码执行完毕。
[0080]在任务的程序代码编译阶段,还可以在任务代码结束位置添加释放预留硬件线程指令,当所述预留的硬件线程读取到释放预留硬件线程指令时,向操作系统发送释放预留的硬件线程的请求,请求释放所述预留的硬件线程资源,因此,本发明实施例还可以包括:
[0081]步骤105,操作系统接收到所述预留的硬件线程发送的释放预留的硬件线程的请求,根据所述请求释放所述预留的硬件线程。
[0082]本发明实施例方案可以应用于操作系统需要执行的任务代码中包括多个子任务对应的子任务代码,且绝大部分子任务都是小任务的情况,通过本发明实施例的方法,当操作系统接收到预留硬件线程的请求后,将需要执行的任务代码发送给预留的硬件线程执行,而不需要给任务代码中的每个子任务创建一个线程大幅度节省了系统的开销,提高了系统资源利用率。
[0083]任务代码中若包括的了多个子任务对应的子任务代码,在硬件线程执行子任务代码的过程中,可能会产生执行异常,需要操作系统对异常进行处理,因此,参见图2,本发明实施例还提供了一个数据处理方法的实施例,包括:
[0084]步骤201,操作系统接收预留硬件线程的请求;
[0085]步骤202,操作系统在硬件线程池中为所述操作系统需要执行的任务代码申请预留硬件线程;
[0086]所述预留的硬件线程可以是空闲的硬件线程,并将其设置为独占状态;
[0087]步骤203,操作系统创建用于执行线程的空白的数据结构;
[0088]其中,步骤202和203没有先后顺序之分;
[0089]步骤204,操作系统将所述任务代码载入所述预留的硬件线程,以使预留的硬件线程执行所述被载入的任务;
[0090]当所述预留的硬件线程在执行所述被载入的任务代码时出现了异常,会向操作系统反馈任务代码执行异常的消息,当操作系统接收到异常消息,就会将出现异常的子任务代码的执行状态载入到创建的空白数据结构中,将载入了所述子任务代码的执行状态的数据结构放入到所述操作系统的调度队列中进行执行并获得执行结果;因此,本发明实施例还包括:
[0091]步骤205,操作系统接收所述预留的硬件线程反馈的任务代码执行异常的消息;
[0092]步骤206,操作系统将反馈所述消息的硬件线程的异常的子任务的执行状态载入到所述的空白的数据结构中;
[0093]其中,通常所述的子任务的执行状态为寄存器状态;
[0094]步骤207,将反馈所述消息的硬件线程中的异常子任务代码的执行状态载入到所述空白的数据结构中;将载入了所述出现异常的子任务代码的执行状态的数据结构放入所述操作系统的任务调度队列中进行执行;;
[0095]所述预留的硬件线程在执行任务代码发生异常时,出现异常的位置存在于某个寄存器状态中,如程序计数器(Program Counter, PC)会记录一个指针,指向当前线程运行到的代码的位置,这个指针就可以当作是出现异常的位置,也就是该线程恢复运行时重新开始的位置。操作系统在后续执行出现异常的子任务代码时,从出现异常的位置开始读取任务代码,读取到“小任务结束”指令则可将当前出现异常的子任务从任务代码中区分出来;因此,在任务的程序代码编译阶段,会在任务代码中的各个子任务对应的子任务代码的结束位置预先设置“小任务结束”指令;
[0096]所述出现异常子任务代码恢复到空白数据结构后,会放到操作系统的调度队列中,此时预留的硬件线程已经空闲出来了,就可以处理下一个被载入到预留硬件线程中的子任务了,不用等待所述出现异常子任务代码执行完毕再装载下一个子任务;其中,若 所述任务代码中包括多个子任务对应的子任务代码,所述每个子任务代码的开始和结束位置分别预先设置小任务开始标识和结束标识,当所述预留的硬件线程为多个时,操作系统可以根据所述小任务开始标识和结束标识在所述任务代码中区分出不同的子任务,将所述任务代码中不同的子任务分别载入对应的硬件线程,从而所述任务中子任务可以在不同硬件线程中并行执行;所有子任务对应的子任务代码在载入到预留硬件线程前,是以一个队列的形式存在的,当有多个预留硬件线程的时候;这个队列就好比是一个仓库,多个子任务代码串行排放,多个预留硬件线程就好比是卡车,每次装载并执行一个或多个小任务代码,执行完成后,再从队列中装载下一个或多个。因此,步骤204具体可以是:操作系统根据所述小任务开始标识和结束标识在所述任务代码中区分出不同的子任务代码,将所述子任务分别载入对应的所述预留的硬件线程,多个所述预留的硬件线程之间并行执行;其中,操作系统可以根据不同子任务代码的执行结果之间是否需要连续来判断将哪些子任务代码载入到同一个硬件线程中。
[0097]步骤208,所述操作系统将所述任务代码中没有出现异常的等待执行的子任务代码载入到所述预留的硬件线程中继续执行;
[0098]其中,所述操作系统在获得了所述出现异常的子任务代码的执行结果之后,当出现异常的子任务代码之后的任务代码的执行需要所述出现异常的子任务的执行结果时,在将任务载入到所述预留的硬件线程中时会告知所述出现异常的子任务的执行结果,例如,将所述出现异常的子任务的执行结果放入到一个变量中,等待下一个任务去读取;
[0099]步骤209,操作系统获得所述预留硬件线程的执行结果;
[0100]步骤210,操作系统接收到所述预留的硬件线程发送的释放预留的硬件线程的请求,根据所述请求释放所述预留的硬件线程以及创建的所述数据结构;
[0101]其中,当操作系统接收到释放预留的硬件线程的请求后,会清空所述预留硬件线程中的任务代码执行状态,例如寄存器的状态,解除所述预留硬件线程的独占状态,将所述预留的硬件线程放回到硬件线程资源池中。
[0102]本发明实施例中,操作系统预先创建用于执行线程的空白的数据结构,当硬件线程在执行任务过程中出现异常,将当前任务的执行状态恢复到空白数据结构中并放入调度队列进行调度执行,避免了硬件线程在执行任务出现异常而导致任务无法执行。
[0103]参见图3,本发明实施例还提供一种数据处理方法,通过该方法将需要执行的任务代码进行编译,执行该方法的编译器可以包括在前面实施例所述的数据处理系统中,也可以单独作为一个装置独立于所述的数据处理系统,方法包括:
[0104]步骤301,编译器在任务的程序代码开始位置添加预留硬件线程指令,所述预留硬件线程指令用于向操作系统发送预留硬件线程的请求;
[0105]步骤302,编译器在任务代码的程序的结束位置添加释放预留硬件线程指令,所述释放预留硬件线程指令用于向操作系统发送释放预留的硬件线程的请求;
[0106]所述步骤301和302并不表示执行顺序;所述操作系统在接收到预留硬件线程的请求后,会在硬件线程资源池中预留硬件线程用于执行任务;而当预留的硬件线程在读取到硬件线程销毁指令时,会向操作系统发送释放预留的硬件线程的请求,操作系统接收到所述硬件线程销毁请求后,释放所述预留的硬件线程等操作。
[0107]若任务代码中包含了多个子任务对应的子任务代码时,在每个被确定为小任务的子任务所对应的代码开始位置和结束位置分别添加小任务所述方法还可以包括:
[0108]步骤303,在任务中的每个子任务的开始位置和结束位置分别添加小任务开始标识和小任务结束标识,所述小任务开始标识和小任务结束标识用以标识小任务的开始和结束;
[0109]其中,所述步骤301、302和303并不对执行顺序进行限制。
[0110]本发明实施例通过编译器在任务的程序代码之前和结束位置添加创建硬件线程和释放预留硬件线程指令,使得程序向操作系统发送预留硬件线程的请求,执行任务的硬件线程读取到释放预留硬件线程指令后向操作系统发送释放预留的硬件线程的请求。
[0111]参见图4,本发明实施例还提供一种数据处理方法,与图2所述的方法不同之处在于,需要执行的任务代码中所包含多个子任务代码,多个子任务代码中有一些子任务被预先识别为小任务,小任务的代码开始位置预先设置有小任务开始标识,因此,操作系统载入到硬件线程的任务代码中包含了多个在代码开始位置预先设置有小任务开始标识的子任务代码,也包括了在代码的开始位置没有设置小任务开始标识的子任务代码,没有设置小任务开始标识的子任务代码就被认为不是小任务;
[0112]在本实施例中,操作系统会将任务代码载入到普通的硬件线程,所述普通的硬件线程是相对于预留的硬件线程而言,普通硬件线程不是操作系统预留出来的,在硬件线程池中,普通的硬件线程和预留的硬件线程仅仅是在执行任务代码是所充当的角色不同,所能够实现的功能是相同的;普通的硬件线程在执行任务代码时,如果遇到标识有小任务开始的标识,将会将后续需要执行的任务代码解耦,发送给预留的硬件线程执行,预留的硬件线程在读取到小任务结束标识时,本次执行完毕,反馈结果;
[0113]由此,硬件线程将任务代码中小任务代码进行解耦并载入给了预留硬件线程去执行,而不需要操作系统为执行每个小任务创建一个线程或在小任务执行完毕销毁一个线程。因此,图4所提供的数据处理方法,应用于数据处理系统中,所述数据处理系统包括操作系统,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括硬件线程,所述方法包括:
[0114]步骤401,所述硬件线程接收操作系统载入的需要执行的任务代码,所述载入的任务代码中包括多个在代码开始位置预先设置有小任务开始标识的子任务代码;
[0115]步骤402,接收所述操作系统在硬件线程池中申请的预留的硬件线程的标识;
[0116]其中,当操作系统接收到预留硬件线程的请求后,会在硬件线程池中申请预留硬件线程并设为独占状态,将预留的硬件线程的标识发送给执行任务代码的硬件线程,也就是前面提到普通硬件线程;
[0117]步骤403,当所述硬件线程读取到所述任务中所述小任务开始标识,则将所述小任务开始标识之后等待执行的任务代码载入到所述预留的硬件线程标识对应的预留的硬件线程。
[0118]由此,硬件线程将任务代码中小任务代码进行解耦并载入给了预留硬件线程去执行,而不需要操作系统为执行每个小任务创建一个线程或在小任务执行完毕销毁一个线程,尤其是在小任务很多的情况下,大幅度降低了开销。
[0119]当整个任务代码执行完毕之后,操作系统需要释放预留的硬件线程,因此,该方法还可以包括:
[0120]步骤404,当所述硬件线程读取到所载入的任务代码中预先设置的释放硬件预留硬件线程的指令,则向所述操作系统发送释放预留硬件线程请求。
[0121]参见图5,本发明实施例还提供一种数据处理方法,以预留硬件线程的角度描述数据处理方法,该方法应用于数据处理系统中,所述数据处理系统包括操作系统,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括硬件线程,所述硬件线程被所述操作系统确定为预留硬件线程;方法包括:
[0122]步骤501,所述硬件线程接收被载入的任务代码,其中,所述被载入的任务代码开始位置预先设置有小任务开始标识;所述任务代码中包括多个在代码开始和结束位置分别预先设置有小任务开始标识和小任务结束标识的子任务代码;
[0123]步骤502,所述硬件线程执行所述被载入的任务代码;
[0124]步骤502a,当读取到被载入的任务代码中的所述小任务结束标识,则结束执行,反馈执行结果。
[0125]当硬件线程在执行所载入的任务代码出现异常时,需要操作系统的参与,因此,该方法还包括:
[0126]步骤502b,当所述硬件线程执行所载入任务代码的过程中,出现执行异常时,向所述操作系统反馈任务代码执行异常的消息,以使所述操作系统将所述出现异常的子任务代码的执行状态载入到所述操作系统预先构建的空白数据结构中。
[0127]为执行上述方法,本发明实施例还提供了数据处理装置,其实现原理和技术效果和方法类似,可参考前述方法实施例的描述。
[0128]参见图6,本发明实施例提供了一种数据处理装置60,用于执行图4和图5对应的方法实施例,应用于数据处理系统中,所述数据处理系统包括操作系统,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括数据处理装置,所述数据处理装置是执行任务代码的物理执行单元,同前述的硬件线程相同,在具体的实现形态上,可以是处理器或具有数据处理功能的芯片;
[0129]所述数据处理装置60包括:
[0130]接收单元601,用于接收所述操作系统载入的需要执行的任务代码,所述任务代码中包括多个在代码开始位置预先设置有小任务开始标识的子任务代码;
[0131]所述接收单元601,还用于接收所述操作系统在硬件线程池中申请的预留的数据处理装置的标识;
[0132]第一解耦单元602,当读取到所述任务中所述小任务开始标识,则将所述小任务开始标识之后等待执行的任务代码载入到所述预留的数据处理装置标识对应的预留的数据处理装置。
[0133]所述数据处理装置,还可以包括:
[0134]释放请求单元603,用于读取到所载入的任务代码中预先设置的释放所述预留的数据处理装置的指令,则向所述操作系统发送释放所述预留数据处理装置的请求。
[0135] 当数据处理装置60被所述操作系统确定为预留的数据处理装置,所述在代码开始位置预先设置有小任务开始标识的子任务代码的结束位置,预先设置小任务结束标识,其中:
[0136]接收单元601,还用于接收被载入的任务代码,其中,所述被载入的任务代码的开始位置预先设置有小任务开始标识;
[0137]所述数据处理装置60还包括:执行单元604,用于执行所述被载入的任务代码,当读取到被载入的任务代码中的所述小任务结束标识,则结束执行,反馈执行结果。
[0138]进一步,当所述数据处理装置60被确定为预留的数据处理装置的情况下,在执行被载入的任务代码时,发生异常需要向操作系统反馈,因此所述数据处理装置60,还可以包括:
[0139]异常反馈单元605,用于当所述执行单元执行所载入任务代码的过程中,出现执行异常时,向所述操作系统反馈任务代码执行异常的消息,以使所述操作系统将所述出现异常的子任务代码的执行状态载入到所述操作系统预先构建的空白数据结构中。
[0140]数据处理装置将任务代码中小任务代码进行解耦并载入给了预留数据处理装置去执行,而不需要操作系统为执行每个小任务创建一个线程或在小任务执行完毕销毁一个线程,从而大幅度减少了系统开销。
[0141]参见图7,本发明实施例还提供一种数据处理装置70,用于实施图1对应的方法,应用于数据处理系统,所述数据处理装置对硬件线程池进行管理,所述硬件线程池中包括多个硬件线程,在具体实现上,所述数据处理装置可以是一个管理硬件线程池的操作系统;
[0142]所述数据处理装置70,包括:
[0143]任务载入单元701,用于载入需要执行的任务代码;
[0144]请求接收单元702,用于读取所述任务代码的开始位置预先添加的预留硬件线程指令,接收所述预留硬件线程指令指示的预留硬件线程的请求;所述预留硬件线程的请求是请求所述操作系统为执行所述任务代码预留硬件线程,所述预留的硬件线程为执行所述任务代码独占的硬件线程;
[0145]处理单元703,用于在硬件线程池中为执行所述任务代码申请预留硬件线程;
[0146]第二解耦单元704,用于将所述任务代码直接载入所述预留的硬件线程,以使预留的硬件线程执行所述被载入的所述任务代码;
[0147]结果获取单元705,用于获得所述预留硬件线程的执行结果。
[0148]其中,所述任务代码中包括多个子任务对应的子任务代码,所述数据处理装置70,还可以包括:
[0149]创建单元706,用于在所述请求接收单元接收到预留硬件线程的请求时,创建空白的数据结构;
[0150]异常处理单元707,用于接收所述预留的硬件线程反馈的任务执行异常的消息;将反馈所述消息的硬件线程中的异常子任务代码的执行状态载入到所述空白的数据结构中;将载入了所述出现异常的子任务代码的执行状态的数据结构放入所述操作系统的任务调度队列中进行执行;
[0151]所述第二解耦单元704,还用于将所述任务代码中没有出现异常的等待执行的子任务代码载入到所述预留的硬件线程中继续执行。
[0152]其中,任务代码的结束位置预先设置了释放预留硬件线程指令,所述数据处理装置还包括:
[0153]释放单元708,用于接收到释放预留的硬件线程的请求,根据所述请求释放所述预留的硬件线程,所述释放预留的硬件线程的请求为所述预留的硬件线程读取到所述释放预留硬件线程指令时向所述操作系统发送的。
[0154]本发明实施例中的数据处理装置,将任务代码发送给预留的硬件线程执行,而不用为任务代码中的每个子任务创建一个线程并在子任务结束后销毁一下线程,尤其是在大幅度减少了系统开销,同时,数据处理装置创建了空白的数据结构,在子任务执行异常时可以将子任务代码的执行状态进行加载,恢复执行出现异常的子任务代码,提高人物代码执行的可靠性。
[0155]参见图8,本发明实施例还提供一种数据处理系统80,包括操作系统801,硬件线程池802,所述硬件线程池802中包括多个硬件线程,例如第一硬件线程8021,第二硬件线程 8022 ;
[0156]所述操作系统801,用于载入需要执行的任务代码,读取所述任务代码的开始位置预先添加的预留硬件线程指令,接收所述预留硬件线程指令指示的预留硬件线程的请求;在所述硬件线程池802中的第一硬件线程8021申请为预留的硬件线程,所述预留的硬件线程为执行所述任务代码独占的硬件线程;将所述任务代码载入所述硬件线程池中除第一硬件线程之外的第二硬件线程8022 ;其中,所述任务代码中包括多个在代码开始和结束位置分别预先设置有小任务开始标识和小任务结束标识的子任务代码;
[0157]所述第二硬件线程8022,用于接收所述操作系统载入的需要执行的任务代码;接收所述操作系统在硬件线程池中申请预留的第一硬件线程8021的标识;当读取到所述任务中所述小任务开始标识,则将所述小任务开始标识之后等待执行的任务代码载入到所述预留的所述第一硬件线程8021 ;
[0158]所述预留的第一硬件线程8021接收被载入的任务代码,其中,所述被载入所述第一硬件线程8021的任务代码开始位置预先设置有小任务开始标识;执行所述被载入的任务代码,当读取到被载入的任务代码中的所述小任务结束标识,则结束执行,反馈执行结果O
[0159]当所述预留的第一硬件线程8021执行完一个小任务代码,反馈执行结果,清空数据,恢复到预留状态,等待下一个小任务代码被载入执行,附图8-1为所述数据处理系统在执行时的流程示意图。
[0160]参见图9,本发明实施例还提供一种数据处理装置90,所述数据处理装置包括处理器91,通信接口 92,存储器93和通信总线94 ;
[0161]所述处理器91、通信接口 92、存储器93通过通信总线94完成相互间的通信;
[0162]所述通信接口 92,用于接收和发送数据;
[0163]所述存储器93用于存储程序;
[0164]所述处理器91用于执行所述存储器中的所述程序,执行图4-5对应的任一方法。
[0165]在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0166]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0167]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0168]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0169]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【主权项】
1.一种数据处理方法,其特征在于,应用于数据处理系统中,所述数据处理系统包括操作系统,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括硬件线程,所述方法包括: 所述硬件线程接收操作系统载入的需要执行的任务代码,所述载入的任务代码中包括多个在代码开始位置预先设置有小任务开始标识的子任务代码; 接收所述操作系统在硬件线程池中申请的预留的硬件线程的标识; 当所述硬件线程读取到所述任务中所述小任务开始标识,则将所述小任务开始标识之后等待执行的任务代码载入到所述预留的硬件线程标识对应的预留的硬件线程。2.根据权利要求1所述的数据处理方法,其特征在于,当所述硬件线程读取到所载入的任务代码中预先设置的释放硬件预留硬件线程的指令,则向所述操作系统发送释放预留硬件线程请求。3.一种数据处理方法,其特征在于,应用于数据处理系统中,所述数据处理系统包括操作系统,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括硬件线程,所述硬件线程被所述操作系统确定为预留硬件线程;所述方法包括: 所述硬件线程接收被载入的任务代码,其中,所述被载入的任务代码开始位置预先设置有小任务开始标识;所述任务代码中包括多个在代码开始和结束位置分别预先设置有小任务开始标识和小任务结束标识的子任务代码; 所述硬件线程执行所述被载入的任务代码,当读取到被载入的任务代码中的所述小任务结束标识,则结 束执行,反馈执行结果。4.根据权利要求3所述的方法,其特征在于,当所述硬件线程执行所载入任务代码的过程中,出现执行异常时,向所述操作系统反馈任务执行异常的消息,以使所述操作系统将所述出现异常的子任务代码的执行状态载入到所述操作系统预先构建的空白数据结构中。5.一种数据处理方法,其特征在于,应用于数据处理系统,所述数据处理系统中包括操作系统,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括多个硬件线程,所述方法包括: 所述操作系统载入需要执行的任务代码,读取所述任务代码的开始位置预先添加的预留硬件线程指令,接收所述预留硬件线程指令指示的预留硬件线程的请求;所述预留硬件线程的请求是请求所述操作系统为执行所述任务代码预留硬件线程,所述预留的硬件线程为执行所述任务代码独占的硬件线程; 所述操作系统在硬件线程池中为执行所述任务代码申请预留硬件线程; 所述操作系统将所述任务代码直接载入所述预留的硬件线程,以使预留的硬件线程执行所述被载入的所述任务代码; 获得所述预留硬件线程的执行结果。6.根据权利要求5所述的数据处理方法,其特征在于,所述任务代码中包括多个子任务对应的子任务代码,所述操作系统在接收到预留硬件线程的请求后,还包括: 所述操作系统创建空白的数据结构;所述操作系统将所述任务代码直接载入所述预留的硬件线程之后,所述方法还包括:所述操作系统接收所述预留的硬件线程反馈的任务代码执行异常的消息;将反馈所述消息的硬件线程中的异常子任务代码的执行状态载入到所述空白的数据结构中;将载入了所述出现异常的子任务代码的执行状态的数据结构放入所述操作系统的任务调度队列中进行执行; 所述操作系统将所述任务代码中没有出现异常的等待执行的子任务代码载入到所述预留的硬件线程中继续执行。7.根据权利要求5或6所述的方法,其特征在于,所述任务代码的结束位置预先设置了释放预留硬件线程指令,所述方法还包括: 所述操作系统接收到释放预留的硬件线程的请求,根据所述请求释放所述预留的硬件线程,所述释放预留的硬件线程的请求为所述预留的硬件线程读取到所述释放预留硬件线程指令时向所述操作系统发送的。8.根据权利要求5任一所述的方法,其特征在于,所述任务代码中包括多个子任务对应的子任务代码,在所述每个子任务代码的开始和结束位置预先设置小任务开始标识和结束标识,所述预留的硬件线程有多个,所述将所述任务代码载入所述预留的硬件线程,以使预留的硬件线程执行所述被载入的任务,包括: 所述操作系统根据所述小任务开始标识和结束标识在所述任务中区分不同的子任务代码,将所述任务代码中包括的不同子任务对应的子任务代码分别载入对应的预留的硬件线程,以使多个所述预留的硬件线程之间并行执行所述被载入的任务。9.一种数据处理方法,其特征在于,包括: 编译器在任务代码开始位置添加预留硬件线程指令,所述预留硬件线程指令用于向操作系统发送预留硬件线程的请求; 所述编译器在任务代码结束位置添加释放预留硬件线程指令,所述释放预留硬件线程指令用于向操作系统发送释放预留的硬件线程的请求。10.根据权利要求9所述的方法,其特征在于,还包括: 在所述任务代码中包括多个子任务对应的子任务代码,在每个被确定为小任务的子任务所对应的代码开始位置和结束位置分别添加小任务开始标识和小任务结束标识,所述小任务开始标识和小任务结束标识用以标识小任务的开始和结束。11.一种数据处理装置,其特征在于,应用于数据处理系统中,所述数据处理系统包括操作系统,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括数据处理装置,所述数据处理装置包括: 接收单元,用于接收所述操作系统载入的需要执行的任务代码,所述任务代码中包括多个在代码开始位置预先设置有小任务开始标识的子任务代码; 所述接收单元,还用于接收所述操作系统在硬件线程池中申请的预留的数据处理装置的标识; 第一解耦单元,当读取到所述任务中所述小任务开始标识,则将所述小任务开始标识之后等待执行的任务代码载入到所述预留的数据处理装置标识对应的预留的数据处理装置。12.根据权利要求11所述的数据处理装置,其特征在于,还包括释放请求单元,用于读取到所载入的任务代码中预先设置的释放所述预留的数据处理装置的指令,则向所述操作系统发送释放所述预留数据处理装置的请求。13.根据权利要求11所述的数据处理装置,其特征在于,所述在代码开始位置预先设置有小任务开始标识的子任务代码的结束位置,预先设置小任务结束标识,当所述数据处理装置被所述操作系统确定为预留的数据处理装置: 所述接收单元,还用于接收被载入的任务代码,其中,所述被载入的任务代码的开始位置预先设置有小任务开始标识; 所述数据处理装置还包括:执行单元,用于执行所述被载入的任务代码,当读取到被载入的任务代码中的所述小任务结束标识,则结束执行,反馈执行结果。14.根据权利要求13所述的装置,其特征在于,还包括: 异常反馈单元,用于当所述执行单元执行所载入任务代码的过程中,出现执行异常时,向所述操作系统反馈任务代码执行异常的消息,以使所述操作系统将所述出现异常的子任务代码的执行状态载入到所述操作系统预先构建的空白数据结构中。15.一种数据处理装置,其特征在于,应用于数据处理系统,所述数据处理装置对硬件线程池进行管理,所述硬件线程池中包括多个硬件线程,包括: 任务载入单元,用于载入需要执行的任务代码; 请求接收单元,用于读取所述任务代码的开始位置预先添加的预留硬件线程指令,接收所述预留硬件线程指令指示的预留硬件线程的请求;所述预留硬件线程的请求是请求所述操作系统为执行所述任务代码预留硬件线程,所述预留的硬件线程为执行所述任务代码独占的硬件线程; 处理单元,用于在硬件线程池中为执行所述任务代码申请预留硬件线程; 第二解耦单元,用于将所述任务代码直接载入所述预留的硬件线程,以使预留的硬件线程执行所述被载入的所述任务代码; 结果获取单元,用于获得所述预留硬件线程的执行结果。16.根据权利要求15所述的数据处理装置,其特征在于,所述任务代码中包括多个子任务对应的子任务代码,还包括: 创建单元,用于在所述请求接收单元接收到预留硬件线程的请求时,创建空白的数据结构; 异常处理单元,用于接收所述预留的硬件线程反馈的任务代码执行异常的消息;将反馈所述消息的硬件线程中的异常子任务代码的执行状态载入到所述空白的数据结构中;将载入了所述出现异常的子任务代码的执行状态的数据结构放入所述操作系统的任务调度队列中进行执行; 所述第二解耦单元,还用于将所述任务代码中没有出现异常的等待执行的子任务代码载入到所述预留的硬件线程中继续执行。17.根据权利要求15或16所述的数据处理装置,其特征在于,所述任务代码的结束位置预先设置了释放预留硬件线程指令,所述数据处理装置还包括: 释放单元,用于接收到释放预留的硬件线程的请求,根据所述请求释放所述预留的硬件线程,所述释放预留的硬件线程的请求为所述预留的硬件线程读取到所述释放预留硬件线程指令时向所述操作系统发送的。18.一种数据处理系统,其特征在于,包括操作系统,硬件线程池,所述操作系统对硬件线程池进行管理,所述硬件线程池中包括多个硬件线程,其中: 所述操作系统,用于载入需要执行的任务代码,读取所述任务代码的开始位置预先添加的预留硬件线程指令,接收所述预留硬件线程指令指示的预留硬件线程的请求;所述操作系统在所述硬件线程池中的第一硬件线程申请为预留的硬件线程,所述预留的硬件线程为执行所述任务代码独占的硬件线程;将所述任务代码载入所述硬件线程池中除第一硬件线程之外的第二硬件线程;其中,所述任务代码中包括多个在代码开始和结束位置分别预先设置有小任务开始标识和小任务结束标识的子任务代码; 所述第二硬件线程,用于接收所述操作系统载入的需要执行的任务代码;接收所述操作系统在硬件线程池中申请预留的第一硬件线程的标识;当读取到所述任务中所述小任务开始标识,则将所述小任务开始标识之后等待执行的任务代码载入到所述预留的所述第一硬件线程; 所述预留的第一硬件线程接收被载入的任务代码,其中,所述被载入所述第一硬件线程的任务代码开始位置预先设置有小任务开始标识;执行所述被载入的任务代码,当读取到被载入的任务代码中的所述小任务结束标识,则结束执行,反馈执行结果。19.一种数据处理装置,其特征在于,所述数据处理装置包括处理器,通信接口,存储器和通信总线; 所述处理器、通信接口、存储器通过通信总线完成相互间的通信; 所述通信接口,用于接收和发送数据; 所述存储器用于存储程序; 所述处理器用于执行所述存储器中的所述程序,执行权利要求1-4任一所述的方法。
【专利摘要】本发明实施例提供数据处理方法、装置和系统,在本发明实施例中,操作系统在接收到预留硬件线程的请求后,将任务代码载入预留的硬件线程,由预留的硬件线程执行后续的任务代码,或者,操作系统将任务代码载入硬件线程进行执行的过程中,当硬件线程读取到了小任务代码标识,则将小任务代码载入到预留的硬件线程进行执行,从而不用为每个任务对应的任务代码创建线程。本发明实施例的方案和现有技术的方案中的操作系统在执线程中的任务代码时为每个任务对应的任务代码创建线程并在执行完任务对应的任务代码后释放对应线程相比,尤其是在任务中包括较多小任务的情况下,大幅度节省了系统的开销,提高了系统资源利用率。
【IPC分类】G06F9/46, G06F9/50
【公开号】CN104899093
【申请号】CN201410076806
【发明人】张立新, 解壁伟
【申请人】华为技术有限公司, 中国科学院计算技术研究所
【公开日】2015年9月9日
【申请日】2014年3月4日
【公告号】WO2015131542A1

最新回复(0)