CN108027740A - 进程和线程启动特征 - Google Patents
进程和线程启动特征 Download PDFInfo
- Publication number
- CN108027740A CN108027740A CN201580083146.XA CN201580083146A CN108027740A CN 108027740 A CN108027740 A CN 108027740A CN 201580083146 A CN201580083146 A CN 201580083146A CN 108027740 A CN108027740 A CN 108027740A
- Authority
- CN
- China
- Prior art keywords
- thread
- function
- creation
- application program
- startup
- 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.)
- Pending
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- 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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/502—Proximity
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)
Abstract
公开了一种用于在启动时向应用程序提供特征的系统。该系统可以执行用户空间启动器应用程序。为了执行启动器应用程序,计算系统可以:用进程创建包装器函数包装进程创建函数,预加载包括进程创建函数的函数库,启动被指定为启动器应用程序的应用程序;用进程创建包装器函数拦截对已启动应用程序的进程创建函数的调用;使用进程创建函数创建表示已启动应用程序的进程;以及基于被指定为启动器的参量,在启动时将特征提供给已启动应用程序的进程。
Description
背景技术
计算系统可以具有管理资源和应用程序执行的操作系统。操作系统可以创建表示正在执行的应用程序的进程和/或线程。进程是正在执行的计算机程序的实例。每个进程可以包含线程。进程的每个线程可以共享地址空间。在具有多个逻辑核心(core)的系统中,不同的核心可以执行该进程和/或线程。
附图说明
以下详细描述参考附图,其中:
图1是示出用于在启动时提供特征的计算系统的示例的方框图;
图2是示出与轮循(round-robin)启动策略选项相结合的平启动策略(flatlaunch policy)的示例的概念图;
图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将LD PRELOAD设置到函数库106。函数库106包括进程创建包装器函数108和线程创建包装器函数110。为了示例的目的,进程创建包装器函数108被示为单个函数,但是在函数库106内可以存在多个进程创建包装器函数。类似地,线程创建包装器函数110可以包括多个线程创建包装器函数。
进程创建包装器函数108和线程创建包装器函数110可以分别包装进程创建或线程创建函数。作为非限制性示例,进程和/或线程创建函数可以是Linux操作系统上的glibc(GNU C库)或libc(标准c库)的一部分。作为一些非限制性示例,进程创建包装器函数和/或线程创建包装器函数的函数调用的示例可以包括:pthread_create()、clone()、spawn()、posix_spawn()、execvp()、execle()、fork()、vfork()和/或syscall()(引用作为参数传递的任意前述函数)。函数库106还可以包装本文未明确描述的其他进程或线程创建函数。
除了使函数库106被预加载之外,启动器应用程序102还使计算系统100开始执行已启动应用程序104,该已启动应用程序104被指定为启动器应用程序102。已启动应用程序104可以在运行时被指定为启动器应用程序102。在各种示例中,与已启动应用程序104相关联的文件可以例如使用命令行参数、文本文件、用户输入等被指定为启动器应用程序102。
无论何时已启动应用程序104对进程创建函数112进行调用,函数库106的进程创建包装器函数108都会拦截进程创建调用。类似地,当已启动应用程序104调用线程创建函数114时,函数库106的线程创建包装器函数110拦截线程创建调用。
响应于拦截对进程创建函数112或线程创建函数114的调用,进程创建包装器函数108或线程创建包装器函数110可以创建表示已启动应用程序104的进程或线程,并且可以向新创建的线程或进程提供特征。
更具体地,通过拦截进程创建和/或线程创建函数调用,启动器应用程序102的进程创建包装器函数108和线程创建包装器函数110可以执行允许函数库106向已启动应用程序104提供某些特征的各种指令。例如,进程创建包装器函数108和线程创建包装器函数110可以向已启动应用程序104提供启动策略选项,该启动策略选项指定进程和/或线程被分配给哪些节点。提供给应用程序104的线程或进程的特征的其他示例可以包括:逻辑CPU亲和性,CPU分配、IO亲和性、内核调度策略、存储器分配策略等。将在本文中更详细地描述在启动时被提供给线程和/或进程的特征的额外细节。
响应于拦截进程创建和/或线程创建函数调用,进程创建包装器函数108和线程创建包装器函数110可以启动进程和/或线程。启动进程和/或线程可以包括基于启动策略将进程和/或线程分配或绑定到特定节点或核心。在一些示例中,启动进程或线程可以包括设置进程或线程的绑定或调度亲和性,使进程或线程仅在该节点或核心上执行。
因此,系统100表示用于执行用户空间启动器应用程序的示例计算系统,其中为了执行启动器应用程序,计算系统:用进程创建包装器函数包装进程创建函数,预加载包括进程创建包装器函数的函数库,启动被指定为启动器应用程序的应用程序,用进程创建包装器函数拦截对已启动应用程序的进程创建函数的调用,使用进程创建函数或线程创建函数创建表示应用程序的进程,以及基于被指定为启动器的参量,在启动时将特征提供给应用程序的进程。
启动器应用程序102可以提供给已启动应用程序104的在启动时的特征的一些示例可以包括启动策略选项和启动策略类型。启动策略选项指示进程和/或线程被分配给哪个节点(例如,物理套接口中的CPU)。一些示例启动策略选项可以包括但不限于:无启动策略选项、轮循、填充优先和打包启动策略选项。
在轮循启动策略选项中,每次已启动应用程序104尝试创建进程或线程,函数库106就将进程或线程分配给计算系统100的下一个可用节点、核心集或具有多个核心的CPU。在填充优先启动策略选项中,每次创建进程或线程时,函数库106将进程或线程分配给同一节点,直到该节点内的每个逻辑核心都被分配了进程或线程。在打包启动策略选项中,函数库106将所有子进程或同级线程分配给同一节点。如果选择无启动策略选项,则可以使用操作系统选择的任何策略启动子进程或线程。
在各种示例中,可能存在不同的线程和进程启动策略选项。一般而言,当函数库106创建新进程时,新进程由该新进程的启动策略的父(parent)来管理。通常,进程开始执行被称为“初始线程”或“主线程”的单个线程。进程因此作为“单线程进程”开始执行。然而,当进程创建额外的线程时,指定的线程启动策略选项将对新创建的线程和任意后续创建的线程生效。
当已启动应用程序104衍生线程时,主线程/初始线程通常已经基于被指定为启动器应用程序102的进程启动策略而被启动,即,被创建并被分配或绑定到特定核心或节点。该绑定不会变化。在各种示例中,启动进程或线程还可以包括设置进程或线程的调度亲和性。已分配到初始/主线程的节点用作开始节点,以实施由该进程创建的所有后续线程的线程启动策略。此外,如果没有定义线程策略,则创建的线程将从其父(创建)线程继承任意启动策略。同样,如果存在进程策略而不存在线程策略,则在一些示例中,函数库106可以将进程中的所有线程分配给同一节点。
此外,本公开定义启动策略类型,其可以被组合为轮循和填充优先启动策略选项。启动策略选项可以进一步受到启动策略类型的影响,启动策略类型也可以被指定为启动器应用程序102。可以被指定为启动器应用程序102的启动策略类型可以包括“平”类型和“树”类型。启动策略类型可以定义共享公共的启动策略选项的一组进程或线程。共享公共的启动策略的一组进程或线程可被称为策略组。此外,启动策略选项可以影响函数库106是否基于策略组内的先前创建的线程或进程来确定节点或核心以分配进程或线程。
在平启动策略类型中,每个进程或线程形成其自己的启动策略的根,即新的启动策略组。由根创建的子线程或进程由与根相同的启动策略进行管理。然而,如果根的子创建额外的进程(即子的子),则第二级子进程充当新的根,从而拥有其自己的启动策略。平启动策略根据启动策略选项分布进程内的同级进程或线程。
在树启动策略类型中,无论父/子进程树有多深,由根进程和任何后代进程创建的所有进程和/或线程都位于同一启动树中。所有这些进程都根据启动策略按照它们被创建的顺序相对于彼此来启动。类似地,所有线程都根据启动策略按照它们被创建的顺序相对于彼此来启动。
不同的进程策略类型和线程策略类型可以被指定为启动器应用程序102。例如,基于树的进程策略可以被指定为启动器应用程序102,其使函数库106在计算系统100的节点或核心之间分布所有进程。然而,用户也可以将平线程策略类型指定启动器应用程序102,以相对于彼此分配已启动应用程序104内的线程。
除了启动策略选项和启动策略类型之外,启动器应用程序102还可以向已启动应用程序104提供额外的特征。例如,启动器应用程序102可以接受参数,该参数使启动器应用程序102设置逻辑CPU亲和性、CPU分配、IO亲和性、内核调度优先级、存储器分配策略、内核调度策略等。启动器应用程序可以接收前述特征的指示作为命令行参数,或者以与如上文关于启动策略选项和类型所描述的方式相似的方式来接收前述特征的指示。
在一些示例中,启动器应用程序102还可以提供CPU策略选项作为在启动时被提供给已启动应用程序104的特征。更具体地,启动器应用程序102可以接收指示,诸如指示在进程应该在其上开始执行的CPU的命令行参数。在各种示例中,当指定CPU策略选项时可能需要进程策略或线程策略。响应于启动器应用程序102执行已启动应用程序104,进程创建包装器函数108或线程创建包装器函数110选择开始在其上执行进程和/或线程的初始节点。响应于已启动应用程序104开始执行,进程创建包装器函数108和/或线程创建包装器函数110启动所选节点内的被指示的CPU上的进程或线程。进程创建包装器函数108和/或线程创建包装器函数110继续在所选节点内以轮循顺序进行对进程和/或线程的CPU选择。
在各种示例中,为了在启动时提供特征,例如IO亲和性、CPU分配、内核调度优先级、存储器分配策略等,启动器应用程序102可以设置环境变量。在一些示例中,进程创建包装器函数108和线程创建包装器函数110可以在拦截来自已启动应用程序104的对进程创建函数112或线程创建函数114的调用时读取环境变量。进程创建包装器函数108和线程创建包装器函数110可以在调用进程创建函数112或线程创建函数114时或者在调用进程创建函数112或线程创建函数114之后传递各种参数或进行额外的系统调用或标准库函数调用。在一些示例中,函数库106可以在启动时向使用libnuma库或sched_setaffinity()系统调用的已创建进程和/或线程提供特征,诸如逻辑CPU亲和性。libnuma库向由Linux内核支持的NUMA策略和特征提供API(应用程序编程接口)的Linux库。sched_setaffinity()系统调用为进程或线程提供CPU亲和性。
现在将讨论关于执行启动器应用程序102的额外的细节。为了执行启动器应用程序102,用户、可执行应用程序或脚本可以发出命令行操作。例如,启动器应用程序102可以被命名为“hopunch”。用于执行启动器应用程序的示例语法可以是:“hplaunch[options]command[command arguments]”。在这个示例中,“command”表示已启动应用程序104,并且“[command arguments]”表示启动器应用程序102应该传递给命令的任何参数。“[option]”可以包括针对启动器应用程序102的参数,作为示例,该参数可以指定进程启动策略、线程策略、CPU启动策略、日志文件、用于启动进程和线程的节点或CPU的列表、CPU分配、逻辑CPU亲和性、IO亲和性、内核调度优先级和/或存储器利用率。这些选项可以被传递给函数库106。
为了将来自启动器应用程序102的参数传递给进程创建包装器函数108和线程创建包装器函数110,启动器应用程序102可以设置操作系统环境变量的值。在各种示例中,函数库106可以读取环境变量以确定传递给启动器应用程序102的参数。一旦函数库106已开始执行,函数库106就可以创建共享存储器文件,其存储指示给启动器应用程序102的参数和/或选项。在一些示例中,启动器应用程序102和函数库106可以使用进程间通信将传递给启动器应用程序的参数传送给函数库106。
响应于执行启动器应用程序102,启动器应用程序102可以执行初始化例程。初始化例程可以设置使函数库106被预加载的环境变量。在一些示例中,启动器应用程序102可以将Linux LD_PRELOAD变量设置为函数库106的值。启动器应用程序102然后可以执行已启动应用程序104。响应于启动器应用程序102执行并已设置LD_PRELOAD变量,可以在c main()函数执行之前通过动态加载器在已启动应用程序104中启用函数库106。类似于执行初始化例程,启动器应用程序102可以在终止后执行“exit()”例程。
每当进程创建包装器函数108或线程创建包装器函数110在已启动应用程序104中创建线程或进程时,相应的包装器函数可以获取原子锁(atomic lock)以更新各种状态数据,诸如最近创建的进程或线程被分配到的核心,从而更新已经执行的多个进程或线程。响应于更新状态数据,进程创建包装器函数108或线程创建包装器函数110可以释放运气(luck)并使线程或进程开始执行。
每当已启动应用程序104的进程或线程终止时,函数库106可以再次使用在其他地方所描述的包装器函数来拦截exit()和/或其他进程或线程终止函数。函数库106可以通过拦截的退出函数调用检测不再有与已启动应用程序104相关联的进程或线程。响应于确定不再有与已启动应用程序104相关联的进程或线程,启动器应用程序102可以删除存储在文件系统上的临时共享存储器文件。共享存储器文件可以包含在已启动应用程序104的线程或进程之间共同的数据。
然而,如果进程或线程没有正常终止,例如使用kill-9命令或另一非优雅(non-graceful)终止机制,则启动器应用程序102可能不会检测到应该移除共享存储器文件。为了处理剩余的共享存储器文件,每当启动器应用程序102再次启动时,启动器应用程序102可以检查可以被移除的共享存储器文件。此外,启动器应用程序102可以保持最大数量的共享存储器文件,并且如果共享存储器文件的数量超过最大数量则删除共享存储器文件。共享存储器文件可以不跨越重新启动而持续存在,即启动器应用程序102可以在重新启动后删除共享存储器文件。
在一些示例中,创建进程或线程的函数,即进程创建函数112和/或线程创建函数114,可以返回指示线程创建或进程创建失败的值。在这种情况下,函数库106可以基于返回值来确定已经发生进程或线程创建失败。函数库106然后可以递减已启动的进程或线程的数量,并且可以恢复指示进程或线程最后被分配到的节点或核心的变量。
图2是示出与轮循启动策略选项相结合的平启动策略的示例的概念图。图2包括系统200。系统200包括进程的树。系统200的每个方框表示由使用函数库106启动的应用创建的进程。响应于进行函数调用以创建进程,函数库106使用进程创建函数112创建所请求的进程,并将进程分配给计算系统的特定节点(例如,CPU等)。
图2的系统200示出与轮循启动策略选项相结合的平启动策略类型的示例。系统200示出了当进程被分配给六个不同节点时该进程的树。为了示例的目的而示出六个节点。在系统200所示的系统内可以存在任意数量的节点。此外,进程中的任意进程可以包括线程而不是进程。
在系统200的示例中,根进程202是第一进程(进程1),并被分配给编号为1的节点。进程202衍生并启动到节点2的进程204(进程2)和到节点3的进程206(进程3)。进程202还衍生进程208(进程4)并将其分配给节点4。
进程208成为新进程树的根,并进一步衍生子进程210(进程5),212、214(进程6)和216(进程7)。进程210、212和214分别被分配给节点5、6和1。进程210、212没有衍生任何额外的进程。按照平策略类型,进程208、210和212具有相同的策略类型,并且在根进程树内以轮循方式分配线程或进程。
如通过具有虚线边界所指示的,进程208及其子进程、进程210、212、214和228具有与进程208相同的启动树。也就是说,将进程208、210、212、214以及进程228(其稍后创建)分配给节点的顺序是相对于彼此的,而不是相对于最近创建的进程被分配到的节点。
进程214接下来衍生子进程216(进程8)。函数库106将进程216分配给节点2,因为策略组中的父进程即进程214被分配给节点1。随后,进程202衍生进程232(进程9)。启动器应用程序将进程232分配给节点5,因为在该启动树中先前创建的进程即进程208被分配给节点4。类似地,进程202衍生进程212(进程10)并将进程212分配给节点6,因为进程232被分配给节点5。
函数库106然后衍生进程218(进程11)和进程220(进程12)。函数库106分别将进程218、220分配给节点3和4。在进程220(进程12)被创建之后,进程208(进程4)衍生进程228(进程13)。函数库106将进程228分配给节点2,因为在该启动树中最近创建的进程(进程214)被分配给节点1。
在创建进程228之后,进程202创建进程230(进程14),并且函数库106将进程230分配给节点1。函数库106将进程230分配给节点1,因为该启动树中最近创建的进程(进程212)先前被分配给节点6。
接下来,进程214创建进程222(进程15)、224(进程16)和226(进程17)。因为进程214是父进程,所以基于启动树中最近创建的进程被分配到的节点使用轮循策略将进程中的每个分配给节点。例如,函数库106将进程222分配给节点5,因为进程220被分配给节点4,并且节点5是轮循策略分配序列中的下一个节点。
此外,应该注意,进程216、218、220、222、224和226与进程214处于相同的启动树中,因为它们是进程214的子进程。此外,进程214是该策略树的根。进程214、216、218、220、222、224的启动树由虚线和点线边界示出。
图3的系统300示出了与轮循启动策略选项相结合的树启动策略类型的示例。如上所述,树启动策略类型使函数库106都具有相同的启动策略类型,而不管进程或线程是否衍生子进程或线程。轮循策略类型使函数库106以序列轮循顺序将进程分配给节点。因为系统300具有单个策略而不是如图2的系统200中的多个策略,所以系统300的进程跨越所有节点被一致地分配,并且使用轮循树启动策略被分配给节点。因为使用树策略来分配进程,所以在系统200中示出的每个后代进程具有与其启动树的根相同的策略。
系统300示出了当进程被分配给六个不同节点时进程的树。出于示例的目的示出了六个节点。在系统300中示出的系统内可以存在任意数量的节点。此外,进程中的任意进程可以包括线程而不是进程。
在系统300的示例中,已启动应用程序104是第一进程302(进程1),并且函数库106将进程302分配给节点1。进程302衍生并启动到节点2的进程304(进程2)和到节点3的进程306(进程3)。进程302还衍生进程308(进程4)并且函数库106将其分配给节点4。
进程308进一步衍生子进程310(进程5)、312(进程6)和314(进程7)。函数库106分别将进程310、312、314分配给节点5、6和1。进程314衍生子进程316(进程8),并且启动器应用程序将进程316分配给节点2。接下来,进程302衍生进程318(进程9)。函数库106将其分配给节点3。进程302随后衍生进程320,并且函数库106将进程332(进程10)分配给节点4。
在进程302衍生进程320之后,进程314衍生进程322(进程11)、324(进程12)。函数库106分别将进程322、324分配给节点5和6。在进程324被创建之后,进程308衍生进程326(进程13)。因为先前创建的进程即进程322被分配给节点6,所以函数库106将进程13分配给节点1。在创建进程326之后,进程302创建进程328(进程14),并且函数库106将进程328分配给节点2。因为先前创建的进程326先前被分配给节点1,所以函数库106将进程328分配给节点2。
接下来,进程314创建进程330(进程15)、332(进程16)和326(进程17)。基于最近创建的进程被分配到的节点将进程中的每个分配给节点。例如,因为进程330(进程15)被分配给节点3,并且节点4是分配序列中的下一个节点,所以函数库106将进程332(进程16)分配给节点4。
图4是用于在启动时向进程和线程提供特征的示例方法400的流程图。方法400可以在下文被描述为由系统(例如,图1的系统100)执行或进行。也可以使用其他合适的系统和/或计算设备。方法400可以以存储在系统的至少一个机器可读存储介质上并由系统的至少一个处理器执行的可执行指令的形式来实现。
可选地或此外,方法400可以以电子电路(例如,硬件)的形式来实现。在本公开的替代示例中,方法400的一个或多个方框可以基本上同时执行或以不同于图4所示的顺序执行。在本公开的替代示例中,方法400可以包括比图4中所示的更多或更少的方框。在一些示例中,方法400的方框中的一个或多个方框可以在某些时候被进行和/或可以重复。
方法400可以在方框402处开始并且继续到方框404,其中系统可以执行用户空间启动器应用程序。为了执行用户空间启动器应用程序(例如启动器应用程序102),系统400可以执行方框406-418。在框406处,系统可以用进程创建包装器函数来包装进程创建函数,例如,进程创建函数112。在方框408处,系统可以用线程创建包装器函数来包装线程创建函数,例如,线程创建函数114。在方框410处,系统可以预加载函数库,例如,函数库106。
在方框412处,启动器应用程序102可以启动被指定为启动器应用程序的应用程序,例如,已启动应用程序104,并且在方框414处,系统可以用进程创建包装器函数或线程创建包装器函数拦截对已启动应用程序的进程创建函数或线程创建函数的调用。在方框416处,系统可以使用进程创建函数或线程创建函数(例如,进程创建函数112或线程创建函数114)来创建表示已启动应用程序的进程或线程。该方法可以前进到方框418,其中系统可以基于被指定为启动器的参量,在启动时向已启动应用程序的进程或线程提供特征。
在各种示例中,为了在启动时提供特征,启动器应用程序102可以提供指示进程或线程被启动的节点和逻辑处理器核心中的至少一个的策略。在一些示例中,策略可以包括下列中的至少一个:轮循顺序、填充优先顺序和打包顺序。在一些示例中,策略可以包括下列中的至少一个:平启动策略和树启动策略。在各种示例中,为了在启动时提供特征,启动器应用程序102可以将下列中的至少一个提供到创建的进程或线程到创建的进程或线程:存储器分配策略、逻辑中央处理单元(CPU)亲和性、CPU分配、输入输出亲和性和内核调度策略。
该方法然后可以进行到方框420,其中该方法可以停止。在各种示例中,为了在启动时向进程或线程提供特征,系统可以向已启动应用程序的进程或线程提供CPU启动策略。为了提供CPU启动策略,系统可以确定用于分配进程或线程的计算系统的节点,响应于确定用于分配进程或线程的计算系统的节点,将进程或线程分配给节点内的核心。在一些示例中,为了在启动时提供特征,计算系统可以向线程提供线程启动策略并向线程提供线程启动策略,线程启动策略和进程启动策略彼此不同。
在各种示例中,方法400可以包括使系统进行以下操作的额外的方框:确定用于分配进程或线程的计算系统的逻辑核心、尝试将进程或线程分配给该核心、确定进程或线程是否被成功启动、响应于确定进程或线程成功启动而将进程或线程标记为响应于启动进程或线程而启动的,以及响应于确定进程或线程未成功启动而撤销进程或线程的分配。
图5是用于在启动时向线程或进程提供特征的示例系统的方框图。例如,系统500可以类似于图1的系统100或图2的系统200。在图5的示例中,系统500包括处理器510和机器可读存储介质520。尽管以下描述引用单个处理器和单个机器可读存储介质,但是这些描述也可以应用于具有多个处理器和多个机器可读存储介质的系统。在这种示例中,指令可以跨越多个机器可读存储介质分布(例如,存储),并且指令可以跨越多个处理器分布(例如,由多个处理器执行)。
处理器510可以是适用于检索和执行存储在机器可读存储介质520中的指令的一个或多个中央处理单元(CPU)、微处理器和/或其它硬件设备。在图5所示的具体示例中,处理器510可以提取、解码并执行指令522、524、525、528以执行非易失性存储器的损耗平衡和故障重新映射。作为检索和执行指令的替代方案或除了检索和执行指令之外,处理器510还可以包括一个或多个电子电路,该电子电路包括用于执行机器可读存储介质520中的指令中的一个或多个指令的功能的多个电子组件。关于本文中描述和示出的可执行指令表示(例如,框),应当理解的是,在替代示例中,包含在一个框内的部分或全部可执行指令和/或电子电路可以被包括在图中所示的不同框中或者未示出的不同框中。
机器可读存储介质520可以是存储可执行指令的任何电子、磁性、光学或其他物理存储设备。因此,机器可读存储介质520可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、非易失性存储器、存储驱动器、光盘等。如图5所示,机器可读存储介质520可以被设置在系统500内。在这种情况下,可执行指令可以被“安装”到系统500上。
可选地,机器可读存储介质520可以是便携式、外部或远程存储介质,例如,其允许系统500从便携式/外部/远程存储介质下载指令。在这种情况下,可执行指令可以是“安装包”的一部分。如本文所述,在具有易失性存储器和非易失性存储器的存储器模块的运行期间,机器可读存储介质520可以用部分备份的可执行指令来编码。
参考图5,用户空间启动器应用程序指令522当由处理器(例如510)执行时可以使系统500执行用户空间启动器应用程序,使处理器执行启动器应用程序的指令进一步使处理器执行指令524、526、528、530、532和534。线程创建包装器指令524在由处理器(例如,510)执行时可以使系统500用线程创建包装器函数包装线程创建函数。库预加载指令526在由处理器(例如,510)执行时可以使系统500预加载包括线程创建包装器函数的函数库。应用程序启动指令528可以使系统500启动被指定为启动器应用程序的应用程序。
调用截取指令530在由处理器(例如,510)执行时可以使系统500用线程创建包装器函数截获对已启动应用程序的线程创建函数的调用。线程创建指令532在由处理器(例如,510)执行时,可以使系统500使用进程、线程创建函数来创建表示应用程序的线程,并且提供特征指令534可以使处理器在启动时基于被指定为启动器的参量将特征提供给应用程序的线程。
在各种示例中,额外的指令可以使处理器(例如,510)使用操作系统的LD_PRELOAD变量来预加载函数库。在一些示例中,图5的非暂时性机器可读存储介质500可以包括使处理器(例如510)使用退出函数的包装器函数来拦截线程的退出函数的指令。
Claims (15)
1.一种用于在启动时向计算系统的应用程序提供特征的方法,所述方法包括:
执行用户空间启动器应用程序,其中执行所述启动器应用程序进一步包括:
用进程创建包装器函数包装进程创建函数;
用线程创建包装器函数包装线程创建函数;
预加载包括所述进程创建包装器函数和所述线程创建包装器函数的函数库;
启动被指定为所述启动器应用程序的应用程序;
用所述进程创建包装器函数或所述线程创建包装器函数拦截对已启动应用程序的所述进程创建函数或所述线程创建函数的调用;
使用所述进程创建函数或所述线程创建函数创建表示所述已启动应用程序的进程或线程;以及
基于被指定为所述启动器的参量,在启动时将特征提供给所述已启动应用程序的所述进程或线程。
2.根据权利要求1所述的方法,其中在启动时提供所述特征进一步包括:提供指示所述进程或线程被启动的节点和逻辑处理器核心中的至少一个的策略。
3.根据权利要求2所述的方法,其中,所述策略包括下列中的至少一个:
轮循顺序、填充优先顺序和打包顺序。
4.根据权利要求2所述的方法,其中,所述策略包括下列中的至少一个:
平启动策略和树启动策略。
5.根据权利要求1所述的方法,其中在启动时提供所述特征进一步包括:
将存储器分配策略、逻辑中央处理单元(CPU)亲和性、CPU分配、输入输出亲和性和内核调度策略中的至少一个提供给所创建的进程或线程。
6.根据权利要求1所述的方法,其中在启动时提供所述特征进一步包括:
向所述线程提供线程启动策略并且向所述进程提供进程启动策略,其中所述线程启动策略不同于所述进程启动策略。
7.根据权利要求1所述的方法,其中在启动时向所述进程提供特征进一步包括:
向所述已启动应用程序的所述进程或所述线程提供CPU启动策略。
8.根据权利要求7所述的方法,其中提供所述CPU启动策略进一步包括:
确定用于分配所述进程或线程的所述计算系统的节点;以及
响应于确定用于分配所述进程或线程的所述计算系统的所述节点,将所述进程或所述线程分配给所述节点内的核心。
9.根据权利要求1所述的方法,进一步包括:
确定用于分配所述进程或线程的所述计算系统的节点;
启动所述节点上的所述进程或线程;
确定所述进程或线程是否被成功启动;
响应于确定所述进程或线程被成功启动,将所述进程或线程标记为响应于启动所述进程或线程而启动的;以及
响应于确定所述进程或线程没有被成功启动,撤销所述进程或所述线程的分配。
10.一种用于在启动时向应用程序提供特征的系统,所述系统包括计算系统,用于:
执行用户空间启动器应用程序,其中为了执行所述启动器应用程序,所述计算系统用于:
用进程创建包装器函数包装进程创建函数;
预加载包括所述进程创建包装器函数的函数库;
启动被指定为所述启动器应用程序的应用程序;
用所述进程创建包装器函数拦截对已启动应用程序的所述进程创建函数的调用;
使用所述进程创建函数或所述线程创建函数创建表示所述已启动应用程序的进程;以及
基于被指定为所述启动器的参量,在启动时将特征提供给所述已启动应用程序的所述进程。
11.根据权利要求10所述的计算系统,其中为了预加载所述函数库,所述系统进一步用于:
使用环境变量预加载所述函数库。
12.根据权利要求10所述的计算系统,其中所述计算系统包括多个非一致存储器架构(NUMA)节点,所述系统进一步用于:
基于被指定为所述启动器的所述参量启动所述节点上的所述进程,
其中所述参量指示启动策略。
13.根据权利要求10所述的计算系统,所述系统进一步用于:
使所述处理器使用退出函数的包装器函数来拦截所述进程的所述退出函数。
14.一种编码有指令的非暂时性机器可读存储介质,所述指令用于在启动时向应用程序提供特征,所述指令由系统的处理器可执行以使所述系统:
执行用户空间启动器应用程序,使所述处理器执行所述启动器应用程序的指令进一步使所述处理器:
用线程创建包装器函数包装线程创建函数;
预加载包括所述线程创建包装器函数的函数库;
启动被指定为所述启动器应用程序的应用程序;
用所述线程创建包装器函数拦截对已启动应用程序的所述线程创建函数的调用;
使用所述线程所述线程创建函数创建表示所述已启动应用程序的线程;以及
基于被指定为所述启动器的参量,在启动时将特征提供给所述已启动应用程序的所述线程。
15.根据权利要求14所述的非暂时性机器可读存储介质,进一步包含在被执行时使所述处理器使用操作系统的环境变量来预加载所述函数库的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2015/051986 WO2017052555A1 (en) | 2015-09-24 | 2015-09-24 | Process and thread launch features |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108027740A true CN108027740A (zh) | 2018-05-11 |
Family
ID=58386737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580083146.XA Pending CN108027740A (zh) | 2015-09-24 | 2015-09-24 | 进程和线程启动特征 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11334368B2 (zh) |
EP (1) | EP3332321B1 (zh) |
CN (1) | CN108027740A (zh) |
WO (1) | WO2017052555A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400016A (zh) * | 2020-03-25 | 2020-07-10 | 新华三信息安全技术有限公司 | 一种调用应用程序接口函数的方法和设备 |
CN112463123A (zh) * | 2020-11-25 | 2021-03-09 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、系统及存储介质 |
CN112527545A (zh) * | 2020-12-04 | 2021-03-19 | 厦门极致互动网络技术股份有限公司 | 一种Erlang进程超时管理方法 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108027740A (zh) | 2015-09-24 | 2018-05-11 | 慧与发展有限责任合伙企业 | 进程和线程启动特征 |
US10977361B2 (en) * | 2017-05-16 | 2021-04-13 | Beyondtrust Software, Inc. | Systems and methods for controlling privileged operations |
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
CN110046053B (zh) | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 用以分配任务的处理系统及其访存方法 |
CN110032453B (zh) * | 2019-04-19 | 2022-05-03 | 上海兆芯集成电路有限公司 | 用以任务调度与分配的处理系统及其加速方法 |
CN110083387B (zh) | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 使用轮询机制的处理系统及其访存方法 |
CN110058931B (zh) | 2019-04-19 | 2022-03-22 | 上海兆芯集成电路有限公司 | 用以任务调度的处理系统及其加速方法 |
CN112527403B (zh) * | 2019-09-19 | 2022-07-05 | 荣耀终端有限公司 | 一种应用启动方法及电子设备 |
US11558348B2 (en) | 2019-09-26 | 2023-01-17 | Apple Inc. | Methods and apparatus for emerging use case support in user space networking |
US11829303B2 (en) | 2019-09-26 | 2023-11-28 | Apple Inc. | Methods and apparatus for device driver operation in non-kernel space |
US11606302B2 (en) | 2020-06-12 | 2023-03-14 | Apple Inc. | Methods and apparatus for flow-based batching and processing |
US11775359B2 (en) | 2020-09-11 | 2023-10-03 | Apple Inc. | Methods and apparatuses for cross-layer processing |
US11954540B2 (en) | 2020-09-14 | 2024-04-09 | Apple Inc. | Methods and apparatus for thread-level execution in non-kernel space |
US11799986B2 (en) | 2020-09-22 | 2023-10-24 | Apple Inc. | Methods and apparatus for thread level execution in non-kernel space |
CN112631760A (zh) * | 2020-12-31 | 2021-04-09 | 深圳市大富网络技术有限公司 | 一种线程创建方法、系统、装置及计算机存储介质 |
US12079657B2 (en) * | 2021-06-24 | 2024-09-03 | Hewlett Packard Enterprise Development Lp | Handling ownership of process threads |
US11876719B2 (en) | 2021-07-26 | 2024-01-16 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US11882051B2 (en) | 2021-07-26 | 2024-01-23 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
CN115408160B (zh) * | 2022-09-16 | 2023-05-05 | 湖南胜云光电科技有限公司 | 一种进程监控的数据处理系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1298147A (zh) * | 1999-11-30 | 2001-06-06 | 恩塞姆公司 | 向虚拟主机提供服务品质保证的技术 |
US20080244578A1 (en) * | 2006-03-31 | 2008-10-02 | Zach Yoav | Managing and Supporting Multithreaded Resources For Native Code in a Heterogeneous Managed Runtime Environment |
US20090019159A1 (en) * | 2007-07-11 | 2009-01-15 | Microsoft Corporation | Transparently externalizing plug-in computation to cluster |
CN102855138A (zh) * | 2012-07-20 | 2013-01-02 | 腾讯科技(深圳)有限公司 | 一种api的拦截方法、装置及移动终端 |
US20140208331A1 (en) * | 2013-01-18 | 2014-07-24 | Nec Laboratories America, Inc. | Methods of processing core selection for applications on manycore processors |
US20140237477A1 (en) * | 2013-01-18 | 2014-08-21 | Nec Laboratories America, Inc. | Simultaneous scheduling of processes and offloading computation on many-core coprocessors |
EP2782038A1 (en) * | 2013-03-19 | 2014-09-24 | STMicroelectronics (Grenoble 2) SAS | Resource management in a processor for trusted and untrusted applications |
CN104239089A (zh) * | 2014-06-26 | 2014-12-24 | 北京奇虎科技有限公司 | 一种实现游戏变速的方法及装置 |
CN104380256A (zh) * | 2012-04-19 | 2015-02-25 | 加泰罗尼亚理工大学 | 用于虚拟化与计算机系统关联的硬件资源的方法、系统和执行代码段 |
CN104881291A (zh) * | 2015-06-03 | 2015-09-02 | 北京金山安全软件有限公司 | 默认浏览器的控制方法、装置及终端 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6415334B1 (en) * | 1997-05-14 | 2002-07-02 | Microsoft Corporation | Method and system for accessing objects of different thread types |
US6282703B1 (en) * | 1998-10-29 | 2001-08-28 | International Business Machines Corporation | Statically linking an application process with a wrapper library |
US6529985B1 (en) * | 2000-02-04 | 2003-03-04 | Ensim Corporation | Selective interception of system calls |
US7159216B2 (en) | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
US6928378B2 (en) * | 2002-07-23 | 2005-08-09 | Sun Microsystems, Inc. | Stress testing at low cost through parallel execution of unit tests |
US20040059706A1 (en) * | 2002-09-25 | 2004-03-25 | International Business Machines Corporation | System and method for providing concurrent usage and replacement of non-native language codes |
US7302533B2 (en) | 2005-03-11 | 2007-11-27 | International Business Machines Corporation | System and method for optimally configuring software systems for a NUMA platform |
US7831325B1 (en) * | 2005-04-18 | 2010-11-09 | Hewlett-Packard Development Company, L.P. | Computing estimated performance of a software application in a target system |
US20080172668A1 (en) * | 2007-01-12 | 2008-07-17 | Tzruya Yoav M | Profile-based cpu/core affinity |
US8849753B2 (en) * | 2008-05-20 | 2014-09-30 | Microsoft Corporation | Automating asynchronous programming in single threaded systems |
US8239488B2 (en) * | 2008-11-21 | 2012-08-07 | The Invention Science Fund I, Llc | Hypothesis development based on user and sensing device data |
US8539488B1 (en) * | 2009-04-10 | 2013-09-17 | Open Invention Network, Llc | System and method for application isolation with live migration |
JP5598493B2 (ja) | 2012-03-30 | 2014-10-01 | 富士通株式会社 | 情報処理装置、演算装置および情報転送方法 |
US8966491B2 (en) | 2012-04-27 | 2015-02-24 | Oracle International Corporation | System and method for implementing NUMA-aware reader-writer locks |
US10019167B2 (en) * | 2013-02-20 | 2018-07-10 | Red Hat, Inc. | Non-Uniform Memory Access (NUMA) resource assignment and re-evaluation |
WO2014172710A1 (en) * | 2013-04-19 | 2014-10-23 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for binary compatibility |
US10120663B2 (en) * | 2014-03-28 | 2018-11-06 | Intel Corporation | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
US20150332043A1 (en) * | 2014-05-15 | 2015-11-19 | Auckland Uniservices Limited | Application analysis system for electronic devices |
US10509644B2 (en) * | 2015-02-25 | 2019-12-17 | Safedk Mobile Ltd | Method and system for controlling integrated software components |
CN108027740A (zh) | 2015-09-24 | 2018-05-11 | 慧与发展有限责任合伙企业 | 进程和线程启动特征 |
-
2015
- 2015-09-24 CN CN201580083146.XA patent/CN108027740A/zh active Pending
- 2015-09-24 EP EP15904895.8A patent/EP3332321B1/en active Active
- 2015-09-24 US US15/756,218 patent/US11334368B2/en active Active
- 2015-09-24 WO PCT/US2015/051986 patent/WO2017052555A1/en active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1298147A (zh) * | 1999-11-30 | 2001-06-06 | 恩塞姆公司 | 向虚拟主机提供服务品质保证的技术 |
US20080244578A1 (en) * | 2006-03-31 | 2008-10-02 | Zach Yoav | Managing and Supporting Multithreaded Resources For Native Code in a Heterogeneous Managed Runtime Environment |
US20090019159A1 (en) * | 2007-07-11 | 2009-01-15 | Microsoft Corporation | Transparently externalizing plug-in computation to cluster |
CN104380256A (zh) * | 2012-04-19 | 2015-02-25 | 加泰罗尼亚理工大学 | 用于虚拟化与计算机系统关联的硬件资源的方法、系统和执行代码段 |
CN102855138A (zh) * | 2012-07-20 | 2013-01-02 | 腾讯科技(深圳)有限公司 | 一种api的拦截方法、装置及移动终端 |
US20140208331A1 (en) * | 2013-01-18 | 2014-07-24 | Nec Laboratories America, Inc. | Methods of processing core selection for applications on manycore processors |
US20140237477A1 (en) * | 2013-01-18 | 2014-08-21 | Nec Laboratories America, Inc. | Simultaneous scheduling of processes and offloading computation on many-core coprocessors |
EP2782038A1 (en) * | 2013-03-19 | 2014-09-24 | STMicroelectronics (Grenoble 2) SAS | Resource management in a processor for trusted and untrusted applications |
CN104239089A (zh) * | 2014-06-26 | 2014-12-24 | 北京奇虎科技有限公司 | 一种实现游戏变速的方法及装置 |
CN104881291A (zh) * | 2015-06-03 | 2015-09-02 | 北京金山安全软件有限公司 | 默认浏览器的控制方法、装置及终端 |
Non-Patent Citations (3)
Title |
---|
JOS E BRUSTOLONI等: "Quality of Service Support for Legacy Applications", 《HTTP://CITESEERX.IST.PSU.EDU/VIEWDOC/DOWNLOAD?DOI=10.1.1.164.4221&REP=REPL&TYPE=》 * |
刘滨: "《操作系统》", 28 February 2003 * |
宋伟: "《操作系统应用》", 28 February 2006 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400016A (zh) * | 2020-03-25 | 2020-07-10 | 新华三信息安全技术有限公司 | 一种调用应用程序接口函数的方法和设备 |
CN111400016B (zh) * | 2020-03-25 | 2023-05-16 | 新华三信息安全技术有限公司 | 一种调用应用程序接口函数的方法和设备 |
CN112463123A (zh) * | 2020-11-25 | 2021-03-09 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、系统及存储介质 |
CN112463123B (zh) * | 2020-11-25 | 2023-07-14 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、系统及存储介质 |
CN112527545A (zh) * | 2020-12-04 | 2021-03-19 | 厦门极致互动网络技术股份有限公司 | 一种Erlang进程超时管理方法 |
CN112527545B (zh) * | 2020-12-04 | 2022-04-29 | 厦门极致互动网络技术股份有限公司 | 一种Erlang进程超时管理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017052555A1 (en) | 2017-03-30 |
US20180253315A1 (en) | 2018-09-06 |
US11334368B2 (en) | 2022-05-17 |
EP3332321A4 (en) | 2019-03-06 |
EP3332321A1 (en) | 2018-06-13 |
EP3332321B1 (en) | 2023-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027740A (zh) | 进程和线程启动特征 | |
US11385903B2 (en) | Firmware update patch | |
EP3761170B1 (en) | Virtual machine creation method and apparatus | |
CN112214293B (zh) | 一种无服务器架构下业务部署的方法和函数管理平台 | |
US9996331B1 (en) | Customized application state transition | |
CN110073646A (zh) | 安全IoT设备更新 | |
CN106354544A (zh) | 虚拟机创建方法、系统以及主机 | |
CN108140086B (zh) | 通过一组互连可编程设备安全执行虚拟机的方法和系统 | |
US11003499B1 (en) | Resource allocation based on agent behavior in a simulation environment | |
GB2506181A (en) | Generating customised program logic for hardware devices | |
US20200293361A1 (en) | Method and distributed database system for computer-aided execution of a program code | |
US9104841B2 (en) | Methods and systems for executing protected content | |
EP3109758A1 (en) | Method and apparatus for scaling an application | |
KR102097644B1 (ko) | 보안 요소 내의 패키지를 관리하는 방법 | |
US9513969B2 (en) | Method for the management of task execution in a computer system | |
CN106681828A (zh) | 一种加固安卓安装包的动态链接库so文件的方法和装置 | |
CN112292679A (zh) | 密码模块和用于密码模块的运行方法 | |
CN117632516A (zh) | 资源分配方法、装置、和计算机设备 | |
CN114598666A (zh) | 资源处理方法及资源调度方法 | |
US20170091216A1 (en) | Lazy logger wrappers | |
CN108733533A (zh) | 经计划的主机维护的可选的手动调度 | |
CN107402892A (zh) | 半导体器件及其存储器访问控制方法 | |
JP2022536681A (ja) | 不揮発性記憶区画識別子 | |
EP4307142A1 (en) | Update agent for multiple operating systems in a secure element | |
CN111240830A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180511 |
|
RJ01 | Rejection of invention patent application after publication |