CN104572275A - 一种进程加载方法、装置及系统 - Google Patents
一种进程加载方法、装置及系统 Download PDFInfo
- Publication number
- CN104572275A CN104572275A CN201310503217.XA CN201310503217A CN104572275A CN 104572275 A CN104572275 A CN 104572275A CN 201310503217 A CN201310503217 A CN 201310503217A CN 104572275 A CN104572275 A CN 104572275A
- Authority
- CN
- China
- Prior art keywords
- thread
- charger
- core
- loaded targets
- information
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Charge And Discharge Circuits For Batteries Or The Like (AREA)
Abstract
本发明实施例提供一种进程加载方法、装置及系统,涉及操作系统领域,通过在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。该方法包括:第一线程加载装置获取进程加载信息,进程加载信息用于指示开始加载第一线程;在第一线程加载装置获取到进程加载信息后,确认第一线程的文件头部是否合法;若第一线程的文件头部合法,第一线程加载装置则执行第一线程中的任务;第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core;在第一线程加载装置接收到第二线程加载目标核Core后,填写第二线程加载目标核Core信息,并将第一线程加入指定的执行队列,从而完成进程加载。
Description
技术领域
本发明涉及操作系统领域,尤其涉及一种进程加载方法、装置及系统。
背景技术
众核处理器一般采用具有一定系统差异性,如具有异构特性、NUMA(Non Uniform Memory Access Achitecture,非统一内存访问)特性的系统结构,其中,具有NUMA特性的系统结构具有使众多服务器像单一系统一样工作,同时保留小系统便于编程和管理的优点。但是,系统结构的异构特性会导致处理器的异构性,在以消息通信为基础的适用于众核处理器的分布式操作系统中,异构性会导致进程在不同核上的执行性能有差别,因此在进程加载时,需要通过亲和性调度来降低处理器的异构性对性能产生的影响。
现有技术中,在操作系统中进程加载和选择进程加载目标核的过程为串行化的在一个线程内完成的过程。在运用单核处理器的系统运行平台上,由于核的数量比较少,因此系统选择进程加载目标核的过程不会耗费太多的时间,但是在运用众核处理器的系统运行平台上,随着核的数量的不断增加,系统选择进程加载目标核的过程将会耗费越来越多的时间。这样,进程加载和选择进程加载目标核所耗费的时间就会变长,进而影响了进程在众核处理器的系统运行平台上的加载速度。同时,为了降低处理器的异构性对性能产生的影响,系统需要实现亲和性调度。然而,使用现有技术在操作系统中实现亲和性调度的过程也是一个串行化过程,在众核处理器的系统运行平台上实现亲和性调度的过程也会减缓进程的加载速度。而且,实现亲和性调度的过程并没有系统信息库等数据库的支持。
发明内容
本发明的实施例提供一种进程加载的方法、装置及系统,通过在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,所述方法包括:
第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程;
在所述第一线程加载装置获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法;
若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务;
所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core;
在所述第一线程加载装置接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
在第一种可能的实现方式中,根据第一方面,若所述第一线程的文件头部不合法,所述第一线程加载装置则发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
在第二种可能的实现方式中,结合第一方面或第一种可能的实现方式,在所述若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务之后,所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core之前,所述方法还包括:
所述第一线程加载装置获取加载所述进程的系统的类型;
所述第一线程加载装置根据所述系统的类型,确认是否需要配置动态链接库;
若需要配置动态链接库,所述第一线程加载装置则填写动态链接库信息。
在第三种可能的实现方式中,结合第一方面或第一种可能的实现方式或第二种可能的实现方式,在所述若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务之后,所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core之前,所述方法还包括:
所述第一线程加载装置检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择;
若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,所述第一线程加载装置则触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
在第四种可能的实现方式中,结合第一方面或第一种可能的实现方式至第三种可能的实现方式,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
第二方面,本发明实施例提供一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,所述方法包括:
第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程;
在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core;
所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
在第一种可能的实现方式中,根据第二方面,在所述第二线程加载装置获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之前,所述方法还包括:
所述第二线程加载装置读取亲和性配置信息,其中,所述亲和性配置信息为选择所述第二线程加载目标核Core提供亲和性运算参数。
在第二种可能的实现方式中,结合第二方面或第一种可能的实现方式,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
在第三种可能的实现方式中,结合第二方面或第一种可能的实现方式或第二种可能的实现方式,在所述第二线程加载装置获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之后,所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置之前,所述方法还包括:
所述第二线程加载装置检测所述第一线程加载装置是否完成了第一线程中的任务的执行;
若所述第一线程加载装置未完成所述第一线程中的任务的执行,所述第二线程加载装置则存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
在第四种可能的实现方式中,结合第二方面或第一种可能的实现方式至第三种可能的实现方式,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
第三方面,本发明实施例提供一种第一线程加载装置,包括:
获取模块,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程;
确认模块,用于在所述获取模块获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法;
执行模块,用于若所述第一线程的文件头部合法,则执行第一线程中的任务;
接收模块,用于接收第二线程加载装置发送的第二线程加载目标核Core;
处理模块,用于在所述接收模块接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
在第一种可能的实现方式中,根据第三方面,所述第一线程加载装置还包括:
发送模块,用于若所述第一线程的文件头部不合法,则发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
在第二种可能的实现方式中,结合第三方面或第一种可能的实现方式,若所述第一线程的文件头部合法,在所述执行模块执行第一线程中的任务之后,所述接收模块接收第二线程加载装置发送的第二线程加载目标核Core之前,
所述获取模块,还用于获取加载所述进程的系统的类型;
所述确认模块,还用于根据所述系统的类型,确认是否需要配置动态链接库;
所述处理模块,还用于若需要配置动态链接库,则填写动态链接库信息。
在第三种可能的实现方式中,结合第三方面或第一种可能的实现方式或第二种可能的实现方式,所述第一线程加载装置还包括:
检测模块,用于在所述执行模块执行第一线程中的任务之后,所述接收模块接收第二线程加载装置发送的第二线程加载目标核Core之前,检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择;
触发模块,用于若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,则触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
在第四种可能的实现方式中,结合第三方面或第一种可能的实现方式至第三种可能的实现方式,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
第四方面,本发明实施例提供一种第二线程加载装置,包括:
获取单元,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程;
选择单元,用于在所述获取单元获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core;
发送单元,用于发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
在第一种可能的实现方式中,根据第四方面,所述第二线程加载装置还包括:
读取单元,用于在所述选择单元获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之前,读取亲和性配置信息,其中,所述亲和性配置信息为选择所述第二线程加载目标核Core提供亲和性运算参数。
在第二种可能的实现方式中,结合第四方面或第一种可能的实现方式,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
在第三种可能的实现方式中,结合第四方面或第一种可能的实现方式或第二种可能的实现方式,所述第二线程加载装置还包括:
检测单元,用于在所述选择单元获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之后,所述发送单元发送所述第二线程加载目标核Core至所述第一线程加载装置之前,检测所述第一线程加载装置是否完成了第一线程中的任务的执行;
存储单元,用于若所述第一线程加载装置未完成所述第一线程中的任务的执行,则存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
在第四种可能的实现方式中,结合第四方面或第一种可能的实现方式至第三种可能的实现方式,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
第五方面,本发明实施例提供一种进程加载系统,包括具有上述任意特征的所述第一线程加载装置,以及具有上述任意特征的所述第二线程加载装置。
本发明实施例所提供的一种进程加载方法、装置及系统,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,通过第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程,在所述第一线程加载装置获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法,若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务,以及所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core,在所述第一线程加载装置接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种进程加载方法的流程示意图;
图2为传统的Linux操作系统进程加载的流程示意图;
图3为本发明实施例二提供的一种进程加载方法的流程示意图;
图4为本发明实施例三提供的一种进程加载方法的流程示意图;
图5为本发明实施例提供的系统知识库的结构示意图;
图6为本发明实施例四提供的一种进程加载方法的流程示意图;
图7为传统的Helios操作系统进行亲和性调度的流程示意图;
图8为本发明实施例提供的亲和性配置信息的来源与其对应的在亲和性信息配置文件中的位置关系图;
图9为本发明实施例五提供的一种第一线程加载装置的结构示意图一;
图10为本发明实施例五提供的一种第一线程加载装置的结构示意图二;
图11为本发明实施例五提供的一种第一线程加载装置的结构示意图三;
图12为本发明实施例六提供的一种第二线程加载装置的结构示意图一;
图13为本发明实施例六提供的一种第二线程加载装置的结构示意图二;
图14为本发明实施例六提供的一种第二线程加载装置的结构示意图三;
图15为本发明实施例七提供的一种第一线程加载器的结构示意图一;
图16为本发明实施例七提供的一种第一线程加载器的结构示意图二;
图17为本发明实施例八提供的一种第二线程加载器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例一
本发明实施例提供一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,如图1所示,该方法包括:
S101、第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程。
众核处理器一般采用具有一定系统差异性,如具有异构特性、NUMA特性的系统结构,其中,具有NUMA特性的系统结构具有使众多服务器像单一系统一样工作,同时保留小系统便于编程和管理的优点。Mesh结构作为具有NUMA特性的一个典型例子,具有结构简单,易于扩展,通信效率高等优点。但是,在当前操作系统中进程加载和选择进程加载目标核的过程为串行化的在一个线程内完成的过程。以Linux操作系统为例,现有技术中进程加载的流程示意图如图2所示,首先,系统获取进程建立信息,建立进程,进而分析二进制文件头、申请物理页并填充参数、更新进程LDT(Local Descriptor Table,局部描述符表)、建立逻辑地址映射与参数表指针、创建并填充PCB并更新上层进程参数,从而完成进程加载。其中,对进程加载目标核的选择是在填写PCB过程中的一个步骤(如图2中虚线框所标注的部分),当创建并填充PCB的过程中需要填写进程加载目标核这个参数时,调度函数会通过进程加载时的参数来选择进程加载目标核。
当然,像Linux操作系统这种传统的操作系统,因为系统运行平台的核的数量比较少,在选择进程加载目标核的时候不会耗费太多的时间,因此,串行化选择进程加载目标核并不会对进程加载产生太大的影响。然而在众核操作系统中,串行化选择进程加载目标核的过程不再是一个简单的动作,需要耗费大量的时间。这样一来,传统的操作系统在进行进程加载时所耗费的时间就会大大增加,影响了进程在众核操作系统中的加载速度。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,能够在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。首先,用于加载第一线程的第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程。
S102、在所述第一线程加载装置获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法。
S103、若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务。
下面,结合步骤S102和S103,对所述第一线程加载装置如何判断所述第一线程的文件头部是否合法以及如何执行第一线程中的任务的过程进行说明。
在所述第一线程加载装置获取到所述进程加载信息后,第一线程加载装置开始进程加载工作,由于进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,因此,此时用于加载第一线程的第一线程加载装置和用于加载第二线程的第二线程加载装置并行工作。开始进程加载工作后,第一线程加载装置需要确认所述第一线程的文件头部是否合法,其中,用于加载第二线程的第二线程加载装置的工作过程将在下述实施例中进行详细描述,此处不再赘述。
若所述第一线程的文件头部合法,则说明第一线程加载装置和第二线程加载装置能够继续工作,所述第一线程加载装置则执行第一线程中的任务。
其中,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
需要说明的是,所述第一线程加载装置判断所述第一线程的文件头部不合法的情况将在下述实施例中进行描述,此处不再赘述。
S104、所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core。
需要说明的是,所述第一线程加载装置接收的第二线程加载目标核Core是由第二线程加载装置选择出来的,具体的,第二线程加载装置如何选择第二线程加载目标核Core的过程将在下述实施例中进行详细描述,此处不再赘述。
S105、在所述第一线程加载装置接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,通过第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程,在所述第一线程加载装置获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法,若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务,以及所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core,在所述第一线程加载装置接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例二
本发明实施例提供一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,如图3所示,该方法包括:
S201、第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,能够在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。首先,用于加载第一线程的第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程。
S202、在所述第一线程加载装置获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法。
在所述第一线程加载装置获取到所述进程加载信息后,第一线程加载装置开始进程加载工作,由于进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,因此,此时用于加载第一线程的第一线程加载装置和用于加载第二线程的第二线程加载装置并行工作。开始进程加载工作后,第一线程加载装置需要确认所述第一线程的文件头部是否合法。
其中,所需加载的进程的文件头部具体为所需加载的进程的二进制文件头部。
S203、若所述第一线程的文件头部不合法,所述第一线程加载装置则发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
若所述第一线程的文件头部不合法,则说明第一线程加载装置和第二线程加载装置不能继续进程加载,此时,所述第一线程加载装置发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
S204、若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务。
与步骤203并列的一个步骤,若所述第一线程的文件头部合法,则说明第一线程加载装置和第二线程加载装置能够继续进程加载,所述第一线程加载装置则执行第一线程中的任务。
其中,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
S205、所述第一线程加载装置获取加载所述进程的系统的类型。
S206、所述第一线程加载装置根据所述系统的类型,确认是否需要配置动态链接库。
S207、若需要配置动态链接库,所述第一线程加载装置则填写动态链接库信息。
针对不同的加载所述进程的系统的类型,第一线程加载装置需要执行的任务也不相同。例如,Linux操作系统,在第一线程加载装置执行第一线程中的任务后,需要配置动态链接库,则所述第一线程加载装置填写动态链接库信息。
同理的,若所述第一线程加载装置根据所述系统的类型,确认得出不需要配置动态链接库,所述第一线程加载装置则不填写动态链接库信息。
S208、所述第一线程加载装置检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择。
由于第一线程加载装置和第二线程加载装置是并行工作的,因此存在着第一线程加载装置完成执行第一线程中的任务与第一线程加载装置完成了所述第二线程加载目标核Core的选择的时间先后的问题。这时,第一线程加载装置就需要检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择。
S209、若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,所述第一线程加载装置则触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,则说明此时第二线程加载装置无法发送所述第二线程加载目标核Core至所述第一线程加载装置,因此,所述第一线程加载装置触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
S210、所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core。
需要说明的是,所述第一线程加载装置接收的第二线程加载目标核Core是由第二线程加载装置选择出来的。
S211、在所述第一线程加载装置接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,通过第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程,在所述第一线程加载装置获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法,若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务,以及所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core,在所述第一线程加载装置接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例三
本发明实施例提供一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,如图4所示,该方法包括:
S301、第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,能够在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。首先,用于加载第二线程的第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程。
S302、在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core。
其中,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,其中,当前时刻系统的动态负载信息可以通过调用操作系统的API(Application ProgrammingInterface,应用程序编程接口)来获取。
需要说明的是,知识库(Knowledge Base)是知识工程中结构化、易操作、易利用、全面有组织的知识集群,是针对某一领域问题求解的需要,是采用某种知识表示方式在计算机存储器中存储、组织、管理和使用的互相联系的知识片集合。本发明实施例所提到的系统知识库是一种系统资源信息的存储和分析服务,包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。操作系统的其他模块或用户能够通过查询与运算分析的外部接口调用这些信息。
一个基本的系统知识库的结构示意图如图5所示,其中,系统知识库的服务端带动一个关系型数据库,该关系型数据库用于存储系统的各种资源信息。当操作系统启动内核以及各种系统服务时,系统知识库的服务端读取系统的硬件资源信息以及拓扑结构、系统服务运行位置等信息,存入到系统知识库的数据库中。服务端对外提供系统知识库的查询与分析接口,用户或操作系统通过调用这些接口,使用系统知识库中已经设定好的分析算法或者通过手动编写需要的特殊算法,对系统知识库的数据库信息进行查询与分析,得到需要的亲和性调度结果。由于第二线程加载装置结合系统知识库选择进程加载目标核的过程使用了关系型数据库以及分析算法,因此分析速度比传统的遍历法要快得多。
S303、所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
在所述第二线程加载装置选择出了所述第二线程加载目标核Core后,发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,通过第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程,在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core,以及所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例四
本发明实施例提供一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,如图6所示,该方法包括:
S401、第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,能够在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。首先,用于加载第二线程的第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程。
S402、所述第二线程加载装置读取亲和性配置信息,其中,所述亲和性配置信息为选择所述第二线程加载目标核Core提供亲和性运算参数。
其中,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
在传统的操作系统中,实现亲和性调度的方法是将硬件平台的拓扑结构、系统服务的运行位置以及进程与其亲和性,还成进程加载时系统的负载情况相结合,并对这些数据进行分析,得出进程加载目标核。以Helios操作系统为例,Helios操作系统通过在编译程序过程中生成进程配置文件,在进程配置文件中对进程的运算平台亲和性、正亲和性、反亲和性等进行了亲和性信息描述。Helios操作系统进行亲和性调度的流程示意图如图7所示,在程序加载时,加载模块通过读取配置文件中的各种亲和性信息,对系统的各个核进行多级过滤,首先通过运算平台亲和性对系统中的所有核进行过滤,选择亲和性最高的核,如果结果唯一,则选择此核作为进程加载目标核;如果结果不唯一,再通过应用程序与系统服务的正亲和性进行过滤,选择亲和性最高的核,如果结果唯一,则选择此核作为进程加载目标核;如果结果仍不唯一,再通过应用程序与系统服务的负亲和性进行过滤,选择亲和性最高的核,如果结果唯一,则选择此核作为进程加载目标核;如果结果仍不是唯一的,则选择结果中负载最低的核。通过这样的多级调度,实现了进程的亲和性调度。
然而,这种亲和性调度方法在进程加载过程中也是串行执行的,因此也会降低进程在众核平台上的加载速度。同时,此方法在调度过程中并不能使用系统信息库等数据库方面的支持,在众核平台核的数量很大的情况下,过滤速度会比较慢,降低了进程加载的速度。
本发明实施例提供的一种进程加载方法,将选择进程加载目标核Core的过程分离,使第二线程加载装置完成亲和性调度的工作。其中,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
需要说明的是,亲和性配置信息的来源主要包括预编译信息、编译器解析、手动配置、操作系统反馈。
其中,预编译信息是用户使用编译器提供的指示亲和性的预编译指令,对程序源代码的代码段添加例如I/O密集、并行计算、循环操作、线程互斥关系等亲和性信息。这种亲和性信息在程序编译时由编译器解析并写入配置文件中;
编译器解析是在编译过程中,编译器分析源代码以及用户添加的指示亲和性的预编译指令,得出应用程序的亲和性属性。当编译器解析出程序的亲和性信息后,按照配置文件的格式分类写入应用程序配置文件中;
手动配置是用户通过操作系统提供的相应接口设置进程的亲和性属性,如进程的运算平台、硬件资源需求、I/O需求、程序优先级等。这些信息在设置后,通过操作系统的接口对进程配置文件进行改写,按配置文件格式填入进程的相应亲和性信息;
操作系统反馈是操作系统根据进程运行过程中的行为记录进程与系统服务通信、对资源使用情况等亲和性信息,比如与服务通信、共享内存、访问硬盘等各种操作。这些信息同样通过操作系统的接口,将进程运行的历史信息按照配置文件格式写入到对应进程的配置文件中。本发明实施例就是以程序亲和性信息的形式将操作系统反馈记录在亲和性配置信息中的。
亲和性配置信息的来源与其对应的在亲和性信息配置文件中的位置关系如图8所示,亲和性信息配置文件包括三个部分:Header、Process affinity以及Thread affinity。Header主要是对配置文件的基本信息进行一些基本说明,并且收集应用程序的优先级信息;Process affinity主要对进程级的亲和性信息进行收集,包括平台需求和硬件资源数量需求等;Thread affinity主要对进程以下级别的亲和性信息进行收集,包括I/O需求、Service的需求、Thread之间的互斥与相连关系等。
需要说明的是,由于第一线程加载装置和第二线程加载装置是并行工作的,第一线程加载装置和第二线程加载装置的工作顺序没有时间先后的关系。
S403、在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core。
其中,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,其中,当前时刻系统的动态负载信息可以通过调用操作系统的API来获取。
需要说明的是,知识库是知识工程中结构化、易操作、易利用、全面有组织的知识集群,是针对某一领域问题求解的需要,是采用某种知识表示方式在计算机存储器中存储、组织、管理和使用的互相联系的知识片集合。本发明实施例所提到的系统知识库是一种系统资源信息的存储和分析服务,包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。操作系统的其他模块或用户能够通过查询与运算分析的外部接口调用这些信息。
一个基本的系统知识库的结构示意图如图5所示,其中,系统知识库的服务端带动一个关系型数据库,该关系型数据库用于存储系统的各种资源信息。当操作系统启动内核以及各种系统服务时,系统知识库的服务端读取系统的硬件资源信息以及拓扑结构、系统服务运行位置等信息,存入到系统知识库的数据库中。服务端对外提供系统知识库的查询与分析接口,用户或操作系统通过调用这些接口,使用系统知识库中已经设定好的分析算法或者通过手动编写需要的特殊算法,对系统知识库的数据库信息进行查询与分析,得到需要的亲和性调度结果。由于第二线程加载装置结合系统知识库选择进程加载目标核的过程使用了关系型数据库以及分析算法,因此分析速度比传统的遍历法要快得多。
示例性的,当第二线程加载装置读取了亲和性配置信息和当前时刻系统的动态负载信息后,按照输入参数的不同对系统知识库进行查询,如表1所示,一个系统知识库应该支持类似的约束性查询和分析算法的录入。
表1
以上的分析算法可以互相结合成约束性更强的联合分析算法,通过使用这样的算法,调用系统知识库对核进行第一次过滤,得出符合亲和性调度要求的所有核的列表,并通过硬件的当前动态负载信息,进行第二次过滤,得到目标核选择的运算结果。当然,系统知识库所支持的约束性查询和分析算法的录入并不局限于表1所列举出的方式,本发明不做限制。
S404、所述第二线程加载装置检测所述第一线程加载装置是否完成了第一线程中的任务的执行。
由于第一线程加载装置和第二线程加载装置是并行工作的,因此存在着第一线程加载装置完成执行第一线程中的任务与第一线程加载装置完成了所述第二线程加载目标核Core的选择的时间先后的问题。这时,所述第二线程加载装置就需要检测所述第一线程加载装置是否完成了第一线程中的任务的执行。
S405、若所述第一线程加载装置未完成所述第一线程中的任务的执行,所述第二线程加载装置则存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
若所述第一线程加载装置未完成所述第一线程中的任务的执行,则说明此时第二线程加载装置无法发送所述第二线程加载目标核Core至所述第一线程加载装置,因此,所述第二线程加载装置存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
S406、所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
本发明实施例所提供的一种进程加载方法,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,通过第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程,在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core,以及所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例五
本发明实施例提供一种第一线程加载装置1,如图9所示,该装置包括:
获取模块10,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程。
确认模块11,用于在所述获取模块获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法。
执行模块12,用于若所述第一线程的文件头部合法,则执行第一线程中的任务。
接收模块13,用于接收第二线程加载装置发送的第二线程加载目标核Core。
处理模块14,用于在所述接收模块接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
进一步地,如图10所示,所述第一线程加载装置1还包括:
发送模块15,用于若所述第一线程的文件头部不合法,则发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
进一步地,若所述第一线程的文件头部合法,在所述执行模块执行第一线程中的任务之后,所述接收模块接收第二线程加载装置发送的第二线程加载目标核Core之前,
所述获取模块10,还用于获取加载所述进程的系统的类型。
所述确认模块11,还用于根据所述系统的类型,确认是否需要配置动态链接库。
所述处理模块14,还用于若需要配置动态链接库,则填写动态链接库信息。
进一步地,如图11所示,所述第一线程加载装置1还包括:
检测模块16,用于在所述执行模块执行第一线程中的任务之后,所述接收模块接收第二线程加载装置发送的第二线程加载目标核Core之前,检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择。
触发模块17,用于若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,则触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
进一步地,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
本发明实施例所提供的一种第一线程加载装置,包括获取模块,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程,确认模块,用于在所述获取模块获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法,执行模块,用于若所述第一线程的文件头部合法,则执行第一线程中的任务,接收模块,用于接收第二线程加载装置发送的第二线程加载目标核Core,以及处理模块,用于在所述接收模块接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例六
本发明实施例提供一种第二线程加载装置2,如图12所示,该装置包括:
获取单元20,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程。
选择单元21,用于在所述获取单元获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core。
发送单元22,用于发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
进一步地,如图13所示,所述第二线程加载装置2还包括:
读取单元23,用于在所述选择单元获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之前,读取亲和性配置信息,其中,所述亲和性配置信息为选择所述第二线程加载目标核Core提供亲和性运算参数。
进一步地,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
进一步地,如图14所示,所述第二线程加载装置2还包括:
检测单元24,用于在所述选择单元获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之后,所述发送单元发送所述第二线程加载目标核Core至所述第一线程加载装置之前,检测所述第一线程加载装置是否完成了第一线程中的任务的执行。
存储单元25,用于若所述第一线程加载装置未完成所述第一线程中的任务的执行,则存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
进一步地,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
本发明实施例所提供的一种第二线程加载装置,包括获取单元,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程,选择单元,用于在所述获取单元获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core,以及发送单元,用于发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例七
本发明实施例提供一种第一线程加载器3,如图15所示,该装置包括:
接收器30,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程。
处理器31,用于在所述接收器30获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法。
所述处理器31,还用于若所述第一线程的文件头部合法,则执行第一线程中的任务。
所述接收器30,还用于接收第二线程加载装置发送的第二线程加载目标核Core。
所述处理器31,还用于在所述接收器30接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
进一步地,如图16所示,所述第一线程加载器3还包括:
发送器32,用于若所述第一线程的文件头部不合法,则发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
进一步地,若所述第一线程的文件头部合法,在所述处理器31执行第一线程中的任务之后,所述接收器30接收第二线程加载装置发送的第二线程加载目标核Core之前,
所述接收器30,还用于获取加载所述进程的系统的类型。
所述处理器31,还用于根据所述系统的类型,确认是否需要配置动态链接库。
所述处理器31,还用于若需要配置动态链接库,则填写动态链接库信息。
进一步地,所述处理器31,还用于在所述处理器31执行第一线程中的任务之后,所述接收器接收第二线程加载装置发送的第二线程加载目标核Core之前,检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择;若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,则触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
进一步地,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
本发明实施例所提供的一种第一线程加载器,包括接收器,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程,以及处理器,用于在所述接收器获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法,所述处理器,还用于若所述第一线程的文件头部合法,则执行第一线程中的任务,所述接收器,还用于接收第二线程加载装置发送的第二线程加载目标核Core,所述处理器,还用于在所述接收器接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例八
本发明实施例提供一种第二线程加载器4,如图17所示,该装置包括:
接收器40,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程。
处理器41,用于在所述接收器40获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core。
发送器42,用于发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
进一步地,所述处理器41,还用于在所述处理器41获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之前,读取亲和性配置信息,其中,所述亲和性配置信息为选择所述第二线程加载目标核Core提供亲和性运算参数。
进一步地,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
进一步地,所述处理器41,还用于在所述处理器41获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之后,所述发送器42发送所述第二线程加载目标核Core至所述第一线程加载装置之前,检测所述第一线程加载装置是否完成了第一线程中的任务的执行;若所述第一线程加载装置未完成所述第一线程中的任务的执行,则存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
进一步地,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
本发明实施例所提供的一种第二线程加载器,包括接收器,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程,处理器,用于在所述接收器40获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core,以及发送器42,用于发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。通过该方案,在进程加载的过程中,将选择进程加载目标核Core的过程分离,加快了进程的加载时间,提高了用户体验感。
实施例九
本发明实施例提供一种进程加载系统,包括具有上述任意特征的所述第一线程加载装置,以及具有上述任意特征的所述第二线程加载装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种进程加载方法,其特征在于,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,所述方法包括:
第一线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程;
在所述第一线程加载装置获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法;
若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务;
所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core;
在所述第一线程加载装置接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
2.根据权利要求1所述的进程加载方法,其特征在于,若所述第一线程的文件头部不合法,所述第一线程加载装置则发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
3.根据权利要求1或2所述的进程加载方法,其特征在于,在所述若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务之后,所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core之前,所述方法还包括:
所述第一线程加载装置获取加载所述进程的系统的类型;
所述第一线程加载装置根据所述系统的类型,确认是否需要配置动态链接库;
若需要配置动态链接库,所述第一线程加载装置则填写动态链接库信息。
4.根据权利要求1或2所述的进程加载方法,其特征在于,在所述若所述第一线程的文件头部合法,所述第一线程加载装置则执行第一线程中的任务之后,所述第一线程加载装置接收第二线程加载装置发送的第二线程加载目标核Core之前,所述方法还包括:
所述第一线程加载装置检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择;
若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,所述第一线程加载装置则触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
5.根据权利要求1-4中任意一项所述的进程加载方法,其特征在于,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
6.一种进程加载方法,其特征在于,进程包括第一线程和第二线程,所述第一线程和所述第二线程之间存在通信关系,所述方法包括:
第二线程加载装置获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程;
在所述第二线程加载装置获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core;
所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
7.根据权利要求6所述的进程加载方法,其特征在于,在所述第二线程加载装置获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之前,所述方法还包括:
所述第二线程加载装置读取亲和性配置信息,其中,所述亲和性配置信息为选择所述第二线程加载目标核Core提供亲和性运算参数。
8.根据权利要求7所述的进程加载方法,其特征在于,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
9.根据权利要求6-8中任意一项所述的进程加载方法,其特征在于,在所述第二线程加载装置获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之后,所述第二线程加载装置发送所述第二线程加载目标核Core至所述第一线程加载装置之前,所述方法还包括:
所述第二线程加载装置检测所述第一线程加载装置是否完成了第一线程中的任务的执行;
若所述第一线程加载装置未完成所述第一线程中的任务的执行,所述第二线程加载装置则存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
10.根据权利要求6-9中任意一项所述的进程加载方法,其特征在于,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
11.一种第一线程加载装置,其特征在于,包括:
获取模块,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第一线程;
确认模块,用于在所述获取模块获取到所述进程加载信息后,确认所述第一线程的文件头部是否合法;
执行模块,用于若所述第一线程的文件头部合法,则执行第一线程中的任务;
接收模块,用于接收第二线程加载装置发送的第二线程加载目标核Core;
处理模块,用于在所述接收模块接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
12.根据权利要求11所述的第一线程加载装置,其特征在于,所述第一线程加载装置还包括:
发送模块,用于若所述第一线程的文件头部不合法,则发送第二线程加载终止信息至所述第二线程加载装置,以使得所述第二线程加载装置终止所述第二线程的加载。
13.根据权利要求11或12所述的第一线程加载装置,其特征在于,若所述第一线程的文件头部合法,在所述执行模块执行第一线程中的任务之后,所述接收模块接收第二线程加载装置发送的第二线程加载目标核Core之前,
所述获取模块,还用于获取加载所述进程的系统的类型;
所述确认模块,还用于根据所述系统的类型,确认是否需要配置动态链接库;
所述处理模块,还用于若需要配置动态链接库,则填写动态链接库信息。
14.根据权利要求11或12所述的第一线程加载装置,其特征在于,所述第一线程加载装置还包括:
检测模块,用于在所述执行模块执行第一线程中的任务之后,所述接收模块接收第二线程加载装置发送的第二线程加载目标核Core之前,检测所述第二线程加载装置是否完成了所述第二线程加载目标核Core的选择;
触发模块,用于若所述第二线程加载装置未完成所述第二线程加载目标核Core的选择,则触发等待模式,所述等待模式用于指示等待所述第二线程加载装置完成所述第二线程加载目标核Core的选择。
15.根据权利要求11-14中任意一项所述的第一线程加载装置,其特征在于,所述第一线程加载装置执行第一线程中的任务,具体包括执行物理页申请,填充参数,建立进程控制块PCB,以及建立虚拟地址映射;所述第一线程的文件头部,具体为所述第一线程的二进制文件头部。
16.一种第二线程加载装置,其特征在于,包括:
获取单元,用于获取所述进程加载信息,所述进程加载信息用于指示开始加载所述第二线程;
选择单元,用于在所述获取单元获取到所述进程加载信息后,获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core;
发送单元,用于发送所述第二线程加载目标核Core至所述第一线程加载装置,以使得所述第一线程加载装置在接收到所述第二线程加载目标核Core后,填写所述第二线程加载目标核Core信息,并将所述第一线程加入指定的执行队列,从而完成进程加载。
17.根据权利要求16所述的第二线程加载装置,其特征在于,所述第二线程加载装置还包括:
读取单元,用于在所述选择单元获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之前,读取亲和性配置信息,其中,所述亲和性配置信息为选择所述第二线程加载目标核Core提供亲和性运算参数。
18.根据权利要求17所述的第二线程加载装置,其特征在于,所述亲和性配置信息包括预编译信息、编译器解析、手动配置、操作系统反馈中任意一种或多种的组合。
19.根据权利要求16-18中任意一项所述的第二线程加载装置,其特征在于,所述第二线程加载装置还包括:
检测单元,用于在所述选择单元获取当前时刻加载所述进程的系统的动态负载信息,并结合系统知识库选择第二线程加载目标核Core之后,所述发送单元发送所述第二线程加载目标核Core至所述第一线程加载装置之前,检测所述第一线程加载装置是否完成了第一线程中的任务的执行;
存储单元,用于若所述第一线程加载装置未完成所述第一线程中的任务的执行,则存储所述第二线程加载目标核Core,以等待所述第一线程加载装置完成所述第一线程中的任务的执行。
20.根据权利要求16-19中任意一项所述的第二线程加载装置,其特征在于,所述系统知识库为选择所述第二线程加载目标核Core提供相应的运算参数;所述系统知识库包括系统的硬件拓扑信息、资源信息和系统服务运行位置信息。
21.一种进程加载系统,其特征在于,包括具有如权利要求11-15中任意一项所述的第一线程加载装置,以及具有如权利要求16-20中任意一项所述的第二线程加载装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310503217.XA CN104572275B (zh) | 2013-10-23 | 2013-10-23 | 一种进程加载方法、装置及系统 |
PCT/CN2014/086287 WO2015058594A1 (zh) | 2013-10-23 | 2014-09-11 | 一种进程加载方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310503217.XA CN104572275B (zh) | 2013-10-23 | 2013-10-23 | 一种进程加载方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572275A true CN104572275A (zh) | 2015-04-29 |
CN104572275B CN104572275B (zh) | 2017-12-29 |
Family
ID=52992226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310503217.XA Active CN104572275B (zh) | 2013-10-23 | 2013-10-23 | 一种进程加载方法、装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104572275B (zh) |
WO (1) | WO2015058594A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609750A (zh) * | 2019-08-01 | 2019-12-24 | 厦门亿联网络技术股份有限公司 | 一种自动分析嵌入式设备死锁的方法及系统 |
CN116737673A (zh) * | 2022-09-13 | 2023-09-12 | 荣耀终端有限公司 | 嵌入式操作系统中文件系统的调度方法、设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630556B (zh) * | 2015-12-25 | 2019-02-19 | 北京像素软件科技股份有限公司 | 一种加载资源的方法和系统 |
CN109753319B (zh) * | 2018-12-28 | 2020-01-17 | 中科寒武纪科技股份有限公司 | 一种释放动态链接库的装置及相关产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1608249A (zh) * | 2001-10-22 | 2005-04-20 | 太阳微系统有限公司 | 多核心多线程处理器 |
CN101196835A (zh) * | 2006-12-07 | 2008-06-11 | 国际商业机器公司 | 用于在线程之间通信的方法和装置 |
CN101251811A (zh) * | 2007-02-20 | 2008-08-27 | 国际商业机器公司 | 基于存储器调页行为关联非相关进程内线程的方法和系统 |
US20110061062A1 (en) * | 2009-07-29 | 2011-03-10 | Echostar Technologies L.L.C. | Communication among execution threads of at least one electronic device |
US20120144406A1 (en) * | 2010-12-02 | 2012-06-07 | Microsoft Corporation | Wait on address synchronization interface |
CN102971708A (zh) * | 2010-10-19 | 2013-03-13 | 英派尔科技开发有限公司 | 多线程程序的低功率执行 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801101A (zh) * | 2006-01-17 | 2006-07-12 | 浙江大学 | Java操作系统中线程的实现和线程状态切换的方法 |
-
2013
- 2013-10-23 CN CN201310503217.XA patent/CN104572275B/zh active Active
-
2014
- 2014-09-11 WO PCT/CN2014/086287 patent/WO2015058594A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1608249A (zh) * | 2001-10-22 | 2005-04-20 | 太阳微系统有限公司 | 多核心多线程处理器 |
CN101196835A (zh) * | 2006-12-07 | 2008-06-11 | 国际商业机器公司 | 用于在线程之间通信的方法和装置 |
CN101251811A (zh) * | 2007-02-20 | 2008-08-27 | 国际商业机器公司 | 基于存储器调页行为关联非相关进程内线程的方法和系统 |
US20110061062A1 (en) * | 2009-07-29 | 2011-03-10 | Echostar Technologies L.L.C. | Communication among execution threads of at least one electronic device |
CN102971708A (zh) * | 2010-10-19 | 2013-03-13 | 英派尔科技开发有限公司 | 多线程程序的低功率执行 |
US20120144406A1 (en) * | 2010-12-02 | 2012-06-07 | Microsoft Corporation | Wait on address synchronization interface |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609750A (zh) * | 2019-08-01 | 2019-12-24 | 厦门亿联网络技术股份有限公司 | 一种自动分析嵌入式设备死锁的方法及系统 |
CN116737673A (zh) * | 2022-09-13 | 2023-09-12 | 荣耀终端有限公司 | 嵌入式操作系统中文件系统的调度方法、设备及存储介质 |
CN116737673B (zh) * | 2022-09-13 | 2024-03-15 | 荣耀终端有限公司 | 嵌入式操作系统中文件系统的调度方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104572275B (zh) | 2017-12-29 |
WO2015058594A1 (zh) | 2015-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103197976A (zh) | 异构系统的任务处理方法及装置 | |
CN107807815B (zh) | 分布式处理任务的方法和装置 | |
CN107423823B (zh) | 一种基于r语言的机器学习建模平台架构设计方法 | |
CN105049268A (zh) | 分布式计算资源分配系统和任务处理方法 | |
CN103365781A (zh) | 用于动态地重新配置存储系统的方法和设备 | |
CN105005911A (zh) | 深度神经网络的运算系统及运算方法 | |
CN104063279A (zh) | 任务调度方法、装置和终端 | |
CN109254836B (zh) | 面向云计算系统优先依赖任务的期限约束成本优化调度方法 | |
CN104102949A (zh) | 一种分布式工作流装置及其处理工作流的方法 | |
CN103399781A (zh) | 云服务器及其虚拟机管理方法 | |
CN104731569A (zh) | 一种数据处理方法及相关设备 | |
CN104572275A (zh) | 一种进程加载方法、装置及系统 | |
CN111309440B (zh) | 一种多类型gpu的管理调度的方法和设备 | |
CN103970573A (zh) | 用于移动设备的轻应用程序系统及其程序加载系统和方法 | |
CN103577165A (zh) | 一种表单生成方法和表单生成器 | |
CN104793996A (zh) | 一种并行计算设备的任务调度方法及任务调度装置 | |
CN102419753B (zh) | 信息处理设备、信息处理方法和信息处理系统 | |
CN104205780A (zh) | 一种存储数据的方法和装置 | |
CN104144202A (zh) | Hadoop分布式文件系统的访问方法、系统和装置 | |
CN111143039A (zh) | 一种虚拟机的调度方法、装置及计算机存储介质 | |
US11023825B2 (en) | Platform as a service cloud server and machine learning data processing method thereof | |
CN109062515B (zh) | 一种磁盘管理方法、系统及相关组件 | |
CN114490062A (zh) | 一种本地磁盘的调度方法、装置、电子设备及存储介质 | |
CN103713953A (zh) | 一种内存数据的搬移装置及方法 | |
CN111435329A (zh) | 一种自动化测试方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |