进程和线程启动特征制造技术

技术编号:17959541 阅读:60 留言:0更新日期:2018-05-16 05:19
公开了一种用于在启动时向应用程序提供特征的系统。该系统可以执行用户空间启动器应用程序。为了执行启动器应用程序,计算系统可以:用进程创建包装器函数包装进程创建函数,预加载包括进程创建函数的函数库,启动被指定为启动器应用程序的应用程序;用进程创建包装器函数拦截对已启动应用程序的进程创建函数的调用;使用进程创建函数创建表示已启动应用程序的进程;以及基于被指定为启动器的参量,在启动时将特征提供给已启动应用程序的进程。

Process and thread startup features

A system for providing features to an application during startup is disclosed. The system can execute user space initiator application. In order to execute the starter application, the computing system can: create a process creation function by creating a wrapper function by process, preload the function library including the process creation function, start the application specified as the starter application; create the wrapper function with the process to intercept the process creation function of the starting application. The call of a number; use the process creation function to create a process that represents the start of the application; and a process based on the parameter specified as the starter to provide the feature to the starting application at startup.

【技术实现步骤摘要】
【国外来华专利技术】进程和线程启动特征
技术介绍
计算系统可以具有管理资源和应用程序执行的操作系统。操作系统可以创建表示正在执行的应用程序的进程和/或线程。进程是正在执行的计算机程序的实例。每个进程可以包含线程。进程的每个线程可以共享地址空间。在具有多个逻辑核心(core)的系统中,不同的核心可以执行该进程和/或线程。附图说明以下详细描述参考附图,其中:图1是示出用于在启动时提供特征的计算系统的示例的方框图;图2是示出与轮循(round-robin)启动策略选项相结合的平启动策略(flatlaunchpolicy)的示例的概念图;图3是示出与轮循启动策略选项相结合的树启动策略类型的示例的概念图;图4是用于向应用程序提供启动时的特征的示例方法的流程图;图5是用于向应用程序提供启动时的特征的示例系统的方框图。具体实施方式操作系统是在计算系统上执行的计算机程序。操作系统负责处理计算系统的资源分配和管理应用程序执行。作为管理应用程序执行的示例,操作系统可以响应于从应用程序接收系统调用(即,对操作系统函数性的请求)而衍生进程和线程。进程是计算系统正在执行的应用程序的实例。在各种示例中,进程可以进一步包括线程。进程的每个线程可以共享地址空间,而进程可能无法共享相同的地址空间。在具有多个逻辑核心的系统中,不同的处理器可以执行进程和/或线程。操作系统可以将进程和/或线程分配给计算系统内的不同核心。计算系统继续包含数量越来越多的逻辑核心。然而,计算系统内的这些逻辑核心之间的延迟可能并不是一致的,这给应用程序执行带来了问题。作为示例,多个逻辑核心可以被集成在单个物理管芯(例如,单个中央处理单元(CPU))内。单个CPU内的核心可以使用CPU内的高速缓存层次结构来相互共享数据。多个CPU可以被集成在主板中。然而,进程或线程在集成到同一主板内的不同CPU之间进行通信的延迟通常可能比与在单个物理CPU内进行通信的线程或进程相关联的延迟大得多。诸如刀片式服务器的计算系统可以包括CPU的刀片件(blade)。每个刀片件本身都是包含一个或多个CPU的服务器。每个刀片件可以经由背板被连接到刀片式服务器中的其他刀片件。进程或线程在位于不同的主板或刀片件上的核心之间相互通信的延迟大于与在单个物理CPU内进行通信的线程或进程相关联的延迟。与不同核心之间的通信相关联的不同延迟对应用程序执行和操作系统资源分配提出了挑战。操作系统可以将应用程序的进程和线程分配给计算系统的逻辑核心。然而,操作系统可能不具有与底层系统体系结构有关的信息。例如,操作系统可能不具有和/或可能不利用与两个逻辑核心是否位于相同的芯片或主板上有关的信息,或者与将进程和/或线程分配给两个不同的逻辑核心的延迟影响有关的信息。在某些情况下,操作系统可以以级别低于其他模式的模式来启动不同核心上的进程和/或线程,并且因此损害应用程序性能。例如,如果线程或进程被分配给相同的逻辑核心,则当线程或进程会更好地执行时,操作系统可以将两个进程或线程分配给不同的核心。本专利技术的技术描述了一种在启动时将特征提供给被指定为启动应用程序的已启动应用程序的用户空间启动器应用程序。通过在启动时向已启动应用程序提供特征,启动器应用程序可以提高应用程序性能和/或提供对应用程序执行行为的更多控制。在执行时,启动器应用程序设置环境变量,当已启动应用程序开始执行时,该环境变量使操作系统的动态加载器预加载函数库。函数库包含线程创建包装器函数和进程创建包装器函数。启动器应用程序启动被指定为启动器应用程序的应用程序,其在本文中被称为已启动应用程序。函数库使用线程创建包装器函数和/或进程创建包装器函数截获进程和/或线程创建函数调用。然后函数库基于被指定为启动器的至少一个参量,在启动时将特征提供给应用程序的进程或线程。示例启动特征可以包括与将进程和/或线程分配给节点(例如,物理套接口中的CPU)和/或计算系统的逻辑核心有关的启动策略选项和启动策略类型。特征可以进一步包括存储器分配、CPU亲和性(affinity)(例如,逻辑CPU亲和性)、CPU分配、输入输出(IO)亲和性、内核(kernel)调度策略等。图1是用于向应用程序在启动时提供特征的计算系统的示例。图1示出了包括启动器应用程序102、函数库106、已启动应用程序104、进程创建包装器函数108、线程创建包装器函数110、进程创建函数112和线程创建函数114的系统100。在图1的示例中,系统100可以包括多个逻辑核心,该多个逻辑核心的任意组合可以执行操作系统。操作系统可以执行管理IO、应用程序系统调用、执行进程调度以及管理计算系统的其他资源的内核。内核可以被加载到存储器中的受保护区域,这防止内核被重写并提供其他安全机制。操作系统可以在用户空间中执行应用程序,诸如启动器应用程序102。用户空间是与内核分离的虚拟存储器区域,并且用户空间保护操作系统和内核免受恶意或不良软件行为的侵害。通过在用户空间中执行启动器应用程序102,可以避免修改内核。此外,用户或程序可以提供使启动器应用程序102在运行时向已启动应用程序104提供特征的指示,诸如命令行参数用户输入等。以这种方式,用户或另一应用程序可以影响已启动应用程序104的执行行为。在各种示例中,启动器应用程序102可以包括命令行应用程序。在其他示例中,启动器应用程序102可以是图形用户界面(GUI)应用程序。在执行时,启动器应用程序102就可以设置预加载环境变量,诸如可用于Linux和Unix系统的LD_PRELOAD环境变量等。在其他示例中,启动器应用程序102可以使用不同的环境变量或技术来预加载函数库106。响应于设置预加载环境变量,当已启动应用程序104的进程开始执行时,操作系统在任何其他共享对象之前加载在环境变量中设置的该共享对象的函数。启动器应用程序102将LDPRELOAD设置到函数库106。函数库106包括进程创建包装器函数108和线程创建包装器函数110。为了示例的目的,进程创建包装器函数108被示为单个函数,但是在函数库106内可以存在多个进程创建包装器函数。类似地,线程创建包装器函数110可以包括多个线程创建包装器函数。进程创建包装器函数108和线程创建包装器函数110可以分别包装进程创建或线程创建函数。作为非限制性示例,进程和/或线程创建函数可以是Linux操作系统上的glibc(GNUC库)或libc(标准c库)的一部分。作为一些非限制性示例,进程创建包装器函数和/或线程创建包装器函数的函数调用的示例可以包括:pthread_create()、clone()、spawn()、posix_spawn()、execvp()、execle()、fork()、vfork()和/或syscall()(引用作为参数传递的任意前述函数)。函数库106还可以包装本文未明确描述的其他进程或线程创建函数。除了使函数库106被预加载之外,启动器应用程序102还使计算系统100开始执行已启动应用程序104,该已启动应用程序104被指定为启动器应用程序102。已启动应用程序104可以在运行时被指定为启动器应用程序102。在各种示例中,与已启动应用程序104相关联的文件可以例如使用命令行参数、文本文件、用户输入等被指定为启动器应用程序10本文档来自技高网...
进程和线程启动特征

【技术保护点】
一种用于在启动时向计算系统的应用程序提供特征的方法,所述方法包括:执行用户空间启动器应用程序,其中执行所述启动器应用程序进一步包括:用进程创建包装器函数包装进程创建函数;用线程创建包装器函数包装线程创建函数;预加载包括所述进程创建包装器函数和所述线程创建包装器函数的函数库;启动被指定为所述启动器应用程序的应用程序;用所述进程创建包装器函数或所述线程创建包装器函数拦截对已启动应用程序的所述进程创建函数或所述线程创建函数的调用;使用所述进程创建函数或所述线程创建函数创建表示所述已启动应用程序的进程或线程;以及基于被指定为所述启动器的参量,在启动时将特征提供给所述已启动应用程序的所述进程或线程。

【技术特征摘要】
【国外来华专利技术】1.一种用于在启动时向计算系统的应用程序提供特征的方法,所述方法包括:执行用户空间启动器应用程序,其中执行所述启动器应用程序进一步包括:用进程创建包装器函数包装进程创建函数;用线程创建包装器函数包装线程创建函数;预加载包括所述进程创建包装器函数和所述线程创建包装器函数的函数库;启动被指定为所述启动器应用程序的应用程序;用所述进程创建包装器函数或所述线程创建包装器函数拦截对已启动应用程序的所述进程创建函数或所述线程创建函数的调用;使用所述进程创建函数或所述线程创建函数创建表示所述已启动应用程序的进程或线程;以及基于被指定为所述启动器的参量,在启动时将特征提供给所述已启动应用程序的所述进程或线程。2.根据权利要求1所述的方法,其中在启动时提供所述特征进一步包括:提供指示所述进程或线程被启动的节点和逻辑处理器核心中的至少一个的策略。3.根据权利要求2所述的方法,其中,所述策略包括下列中的至少一个:轮循顺序、填充优先顺序和打包顺序。4.根据权利要求2所述的方法,其中,所述策略包括下列中的至少一个:平启动策略和树启动策略。5.根据权利要求1所述的方法,其中在启动时提供所述特征进一步包括:将存储器分配策略、逻辑中央处理单元(CPU)亲和性、CPU分配、输入输出亲和性和内核调度策略中的至少一个提供给所创建的进程或线程。6.根据权利要求1所述的方法,其中在启动时提供所述特征进一步包括:向所述线程提供线程启动策略并且向所述进程提供进程启动策略,其中所述线程启动策略不同于所述进程启动策略。7.根据权利要求1所述的方法,其中在启动时向所述进程提供特征进一步包括:向所述已启动应用程序的所述进程或所述线程提供CPU启动策略。8.根据权利要求7所述的方法,其中提供所述CPU启动策略进一步包括:确定用于分配所述进程或线程的所述计算系统的节点;以及响应于确定用于分配所述进程或线程的所述计算系统的所述节点,将所述进程或所述线程分配给所述节点内的核心。9.根据权利要求1所述的方法,进一步包括:确定用于分配所述进程或线程的所述计算系统的节点;启动所述节点上的所述进程或线程;确定所述进程或线程是否被成功启动...

【专利技术属性】
技术研发人员:斯考特·J·诺顿托马斯·L·瓦登
申请(专利权)人:慧与发展有限责任合伙企业
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1