CN102047217A - 重新获取对执行外部执行上下文的处理资源的控制 - Google Patents
重新获取对执行外部执行上下文的处理资源的控制 Download PDFInfo
- Publication number
- CN102047217A CN102047217A CN2009801212071A CN200980121207A CN102047217A CN 102047217 A CN102047217 A CN 102047217A CN 2009801212071 A CN2009801212071 A CN 2009801212071A CN 200980121207 A CN200980121207 A CN 200980121207A CN 102047217 A CN102047217 A CN 102047217A
- Authority
- CN
- China
- Prior art keywords
- scheduler
- context
- resource
- execution
- task
- 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
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
Abstract
计算机系统的进程中的调度器允许外部执行上下文在分配给该调度器的处理资源上执行。调度器向外部执行上下文提供对处理资源的控制。调度器注册与外部执行上下文相关联的退出事件的通知。响应于接收到已发生退出事件的通知,调度器重新获取对处理资源的控制并使得由该处理资源执行与该调度器所控制的执行上下文相关联的任务。
Description
背景
在计算机系统中执行的进程可包括调度进程的任务以便在计算机系统中执行的执行上下文调度器。调度器可创建执行上下文(例如,线程、光纤或子进程)以执行任务。在执行期间,调度器维护对这些执行上下文的控制并维护对分配给该调度器的处理资源的控制。
调度器通常不具有对在该调度器之外创建的执行上下文(即,外部执行上下文)的控制。如果调度器允许外部执行上下文用该调度器的处理资源来执行,则外部执行上下文获取对处理资源的控制。该外部执行上下文可以不包括用于将对处理资源的控制返回给调度器的机制。结果,调度器可能丢失执行外部执行上下文的处理资源。
概述
提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
计算机系统的进程中的调度器允许外部执行上下文在分配给该调度器的处理资源上执行。调度器向外部执行上下文提供对处理资源的控制。调度器注册与外部执行上下文相关联的退出事件的通知。响应于接收到已发生退出事件的通知,调度器重新获取对处理资源的控制并使得由该处理资源执行与该调度器所控制的执行上下文相关联的任务。
附图简述
包括附图来提供了对各实施例的进一步理解,且这些附图被合并在本发明书内并构成其一部分。附图示出各实施例,并且与说明书一起用于解释本发明的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此而缩放。相同的附图标记指代对应的类似部分。
图1A-1D是示出被配置成请求和接收与运行时环境中的外部执行上下文相关联的退出事件通知的调度器的各实施例的框图。
图2是示出供在调度器中使用的调度组的一实施例的框图。
图3是示出用于请求和接收与外部执行上下文相关联的退出事件通知的方法的流程图。
图4是示出用于提供退出事件通知的方法的一实施例的流程图。
图5是示出被配置成实现包括调度器的运行时环境的计算机系统的一实施例的框图,该调度器被配置成请求和接收与外部执行上下文相关联的退出事件通知。
详细描述
在以下详细描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本发明的各特定实施例。就此,诸如“顶部”、“底部”、“前方”、“后方”、“前导”、“尾部”等的方向性术语参考正在描述的附图的方向来使用。因为实施例的各组件可位于多个不同的方向,所以方向性术语出于说明的目的来使用而不是限制。可以理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本发明的范围。因此,以下详细描述并不旨在限制,并且本发明的范围由所附权利要求来限定。
应该理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。
图1A-1D是示出运行时环境10的进程12中的调度器22的各实施例的框图。调度器22被配置成请求和接收与外部执行上下文26相关联的退出事件通知
参考图1A,运行时环境10表示计算机系统中的运行时操作模式,诸如图5中示出且在下文中更详细地描述的计算机系统100,其中该计算机系统正在执行指令。计算机系统从诸如图5中示出且在下文中更详细描述的运行时平台122等运行时平台中生成运行时环境10。
运行时环境10包括至少一个已调用的进程12、操作系统(OS)14、一组硬件线程16(1)-16(M),其中M是大于或等于1的整数且表示第M个硬件线程16(M)、以及资源管理层18。运行时环境10允许使用OS 14、资源管理层18和硬件线程16(1)-16(M)来执行来自进程12的任务以及来自与进程12共存的任何其他进程的任务(未示出)。运行时环境10结合OS 14和/或资源管理层18来操作以允许进程12获得计算机系统的处理器和其他资源(例如,硬件线程16(1)-16(M))。
运行时环境10包括生成调度器22的调度器功能。在一个实施例中,调度器功能被实现为调度器应用程序编程接口(API)。在其他实施例中,调度器功能可使用其他合适的编程构造来实现。当进程12被调用时,调度器功能在进程12中创建调度器22,其中调度器22用于调度进程12的任务以供一个或多个硬件线程16(1)-16(M)执行。运行时环境10可使用知道调度器功能所提供的设施的附随工具来利用应用程序或库开发者在其程序(例如,进程12)中表达的精细粒度并发性。
进程12包括对主存一个或多个执行上下文(即线程)的处理和其他资源的分配。进程12从OS 14和/或资源管理层18获取对计算机系统中的处理和其他资源(例如,硬件线程16(1)-16(M))的访问。进程12使用该处理和其他资源来使任务被执行。
进程12在不同长度的任务中生成工作,其中每一任务与调度器22中的执行上下文相关联。每一任务包括当由计算机系统执行时执行工作单元的指令序列。每一执行上下文形成在分配到的处理资源上执行相关联的任务的线程。每一执行上下文包括程序状态信息和机器状态信息。执行上下文可在没有剩余任务要执行的情况下终止。对于每一任务,运行时环境10和/或进程12或者将任务分配到调度器22以被调度执行,或者以其他方式使该任务在不使用调度器22的情况下执行。
进程12可被配置成在基于诸如栈模型或解释器模型等任何合适的执行模型的计算机环境中操作,且可表示任何合适类型的代码,如应用程序、库函数或操作系统服务。进程12具有与包括定义的存储器地址空间的一组分配的资源相关联的程序状态和机器状态。进程12独立于运行时环境10中的任何共存进程而自主地或基本自主地执行。因此,进程12不会无意地更改共存进程的程序状态或分配到共存进程的任何资源的机器状态。类似地,共存进程不会无意地更改进程12的程序状态或分配到进程12的任何资源的机器状态。
OS 14管理计算机系统的处理和其他资源并提供允许计算机系统中的进程12和其他进程访问和使用组件的一组功能。另外,OS 14向计算机系统中的调度器22和进程12提供执行上下文。如图1A所示,OS 14向调度器22提供执行上下文34(1)-34(N)和一组执行上下文38,其中N是大于或等于一的整数并且表示第N个执行上下文34(N)。OS 14还向进程12提供执行上下文26(1)-26(P),其中P是大于或等于一的整数并且表示第P个执行上下文26(P)。
硬件线程16驻留在计算机系统的一组或者一个或多个处理器封装(例如,图5中示出且在下文更详细地描述的处理器封装102)的执行核中。每一硬件线程16被配置成独立于或基本独立于其他执行核来执行指令,且包括机器状态。硬件线程16可被包括在单个处理器封装中,或者可分布在多个处理器封装上。处理器封装中的每一执行核可包括一个或多个硬件线程16。
资源管理层18通过将一个或多个硬件线程16分配到进程12来将处理资源分配到进程12。在图1A-1D的实施例中,资源管理层18与OS 14分开存在。在其他实施例中,资源管理层18或其部分或全部功能可被包括在OS 14中。
处理器12隐式地或显式地使得调度器22经由运行时环境10提供的调度器功能来创建。当进程12使用计算机系统中可用的API或编程语言特征时,可隐式地创建调度器实例22。响应于API或编程语言特征,运行时环境10创建带有默认策略的调度器22。为了显式地创建调度器22,进程12可调用运行时环境10提供的调度器功能并为调度器22指定一个或多个策略。
调度器22以对于进程12透明的方式与资源管理层18进行交互来协商计算机系统的处理和其他资源。资源管理层18基于供需和调度器22的任何策略来将硬件线程16分配到调度器22。
在图1A-1D示出的实施例中,调度器22通过创建形成底层硬件线程16的抽象的虚拟处理器32来管理处理资源。调度器22包括一组虚拟处理器32(1)-32(N),其中N是大于或等于一的整数并且表示第N个虚拟处理器32(N)。调度器22通过将每一虚拟处理器32映射到硬件线程16来将虚拟处理器32复用到硬件线程16上。调度器22可将一个以上的虚拟处理器32映射到特定硬件线程16上,但只可将一个硬件线程16映射到每一虚拟处理器32。在其他实施例中,调度器22以其他合适的方式来管理处理资源以使得硬件线程16执行进程12的指令。
调度器22中的执行上下文集包括具有正在由相应的虚拟处理器32(1)-32(N)执行的相应的相关联的任务36(1)-36(N)的一组执行上下文34(1)-34(N),以及在进程12A的执行期间的任何时刻的一组零个或多个执行上下文38。每一执行上下文34和38包括指示执行上下文34或38是正在执行的、可运行的(例如,响应于变为解除阻塞或被添加到调度器22)还是被阻塞的状态信息。正在执行的执行上下文34已经被附加到虚拟处理器32且当前正在执行。可运行的执行上下文38包括相关联的任务40且准备好由可用虚拟处理器32来执行。被阻塞的执行上下文38还包括相关联的任务40且正在等待正由另一执行上下文34生成的或者将由另一执行上下文38生成的数据、消息或事件。
在虚拟处理器32上执行的每一执行上下文34可在其执行过程中生成按任何合适的方式来组织(例如,添加到工作队列(未在图1A-1D中示出))的附加任务42。在一实施例中,可以通过使用运行时环境10提供的应用程序编程接口(API)或编程语言特征以及相应的工具来创建工作。当处理资源对调度器22可用时,任务被分配到在获得新任务之前将其在虚拟处理器32上执行完全的执行上下文34或38。在虚拟处理器32上执行的执行上下文34还可通过生成将由其他执行上下文38使用的数据、消息或事件来对其他执行上下文38解除阻塞。
调度器22中的每一任务可以是实现的(例如,已实现的任务36和40),这指示执行上下文34或38已经或将要被附加到该任务且该任务准备好执行。已实现的任务通常包括解除阻塞的执行上下文和调度的代理。未实现的任务被称为未实现的。未实现的任务(例如,任务42)可作为父任务的执行所生成的子任务来创建,且可由并行构造来生成(例如,并行、并行的、开始和完成)。调度器22可被组织成用于带有执行上下文的逻辑上独立的任务(即,实现的任务)的同步集合(例如,栈和/或队列),以及用于依赖任务(即,未实现的任务)的工作窃取(workstealing)队列的列表,如以下图2的实施例所描述的。
在完成、阻塞或以其他方式中断(即,显式产生或迫使抢先)在虚拟处理器32上运行的执行上下文34之后,虚拟处理器32变成可用于执行另一已实现的任务40或未实现的任务42。调度器22搜索可运行执行上下文38或未实现的任务42来附加到可用虚拟处理器32以便按任何合适的方式来执行。例如,调度器22可在搜索要执行的未实现的任务42之前首先搜索要执行的可运行执行上下文38。调度器22继续将执行上下文38附加到可用虚拟处理器32以便执行,直到执行了调度器22的所有任务和执行上下文38。
在一个实施例中,进程12将任务组织成一个或多个调度组50并将调度组50呈现给调度器22。图2是示出供在调度器22中使用的调度组50的一实施例的框图。
调度组50包括可运行集合52、已实现的任务集合53、工作集合54、和一组零个或多个工作窃取队列56。可运行集合52包含解除阻塞的执行上下文38的列表。当执行上下文变为解除阻塞时,调度器22将执行上下文38添加至可运行集合52。已实现的任务集合53包含可能具有或可能不具有相关联的执行上下文38的已实现的任务40的列表(例如,未启动的代理)。当进程12将新的可运行任务呈现给调度器22时,调度器22将已实现的任务添加至已实现的任务集合53。工作集合54包含如由箭头58所指示的工作窃取队列56的列表,并跟踪正在执行来自工作窃取队列56的任务的执行上下文。每一工作窃取队列56包括一个或多个未实现的任务42。
使用图2的实施例,调度器22可首先在调度器22中的每一调度组50的可运行集合52中搜索解除阻塞的执行上下文38。调度器实例22然后可在调度组50的工作窃取队列56中搜索未实现的任务之前在调度器22中的所有调度组50的已实现的任务集合53中搜索已实现的任务。
在一个实施例中,变为可用的虚拟处理器32可尝试在该可用虚拟处理器32最近从中获得可运行执行上下文38的调度组50(即,当前调度组50)中的可运行集合52中定位可运行执行上下文38。可用虚拟处理器32然后可尝试以循环或其他合适的次序在调度器22的其余调度组50中的可运行集合52中定位可运行执行上下文38。如果没有找到可运行执行上下文38,则可用虚拟处理器32然后可尝试在以循环或其他合适的次序搜索调度器22的其余调度组50中的工作窃取队列56之前在当前调度组50的工作窃取队列56中定位未实现的任务42。
回头参考图1A,调度器22创建并管理执行上下文34和28。当执行上下文34在虚拟处理器32上完成执行时,该执行上下文34将对该虚拟处理器32的控制返回给调度器22。调度器22然后可使得虚拟处理器32搜索要执行的另一执行上下文38直到所有执行上下文38和任务42都已完成执行。
除了由调度器22创建和管理的执行上下文34和38之外,调度器22允许由进程12创建并在调度器22外部的外部执行上下文26直接在属于调度器22的虚拟处理器32上执行。当外部执行上下文26直接在属于调度器22的虚拟处理器32上执行时,调度器22将对虚拟处理器32的控制移交给外部执行上下文26。通过这样做,调度器22可以避免可能的昂贵的上下文切换并允许对外部外部执行上下文26应用调度器22的调度策略。
然而,因为外部执行上下文26不在调度器22的控制下,所以外部执行上下文26不将虚拟处理器32返回给调度器22。相反,外部执行上下文26继续使用虚拟处理器32,直到外部执行上下文26通过退出运行时环境10或由操作系统14创建的操作系统环境来停止执行。当外部执行上下文26停止执行时,调度器22回收外部执行上下文26所使用的虚拟处理器32。
为了回收外部执行上下文26所使用的虚拟处理器32,调度器22向运行时环境10或OS 14注册与外部执行上下文26相关联的退出事件的通知。响应于接收到来自运行时环境10或OS 14的已经发生退出事件的通知,调度器22重新获取对虚拟处理器32的控制并使得由虚拟处理器32来执行与由调度器22控制的执行上下文34或38相关联的任务40或42。
图3是示出用于请求和接收与外部执行上下文26相关联的退出事件通知的方法的流程图。如由调度器22执行的图3的方法将参考图1A-1D的实施例来描述。另外,由运行时环境10或OS 14执行的功能将参考图4描述。图4是示出用于提供退出事件通知的方法的一实施例的流程图。
在图3中,调度器22确定调度器22中是否包括外部执行上下文,如框62所示。如此处所使用的,术语“外部执行上下文”指的是由进程12而不是由调度器22创建的执行上下文。进程12由此控制外部执行上下文的执行。外部执行上下文可响应于生成任务以供调度器22执行,或通过显式地创建调度器22来被包括在调度器22中。
参考图1A的示例,调度器22确定调度器22中是否包括外部执行上下文26中的任一个。进程12通过向OS 14提供请求来创建外部执行上下文26。因为这些外部执行上下文26是由进程12创建的,所以进程12,而不是调度器22控制外部执行上下文26的执行。相反,调度器22通过向OS 14提供请求来创建执行上下文34和38。因此,调度器22控制执行上下文34和38的执行。
如果调度器22中包括外部执行上下文,则调度器22将该外部执行上下文转换成自主执行上下文,如框64所示。如此处所使用的,自主执行上下文是在调度器22的处理资源上执行但不在调度器22的控制下的执行上下文。因此,调度器22提供调度器22的处理资源以供自主执行上下文使用,以便允许该自主执行上下文在该处理资源上执行。通过这样做,调度器22放弃对处理资源的控制,以使得该处理资源在自主执行上下文的控制下,而不在调度器22的控制下。
参考图1B的示例,调度器22确定调度器22中是否包括外部执行上下文26(1)。调度器22将外部执行上下文26(1)转换成自主执行上下文26(1)并将虚拟处理器32(1)提供给自主执行上下文26(1)。虚拟处理器32(1)执行自主执行上下文26(1)的至少一个任务28(1)。
调度器22注册与自主执行上下文相关联的退出事件的通知,如框66所示。自主执行上下文执行进程12中的调度器22的任务并且可以不包括用于将对处理资源的控制返回给调度器22的机制。自主执行上下文继续在调度器22的处理资源上执行,除非自主执行上下文显式地脱离调度器22(例如,经由运行时环境10所提供的API)。自主执行上下文可以在任何时刻退出运行时环境10和/或由OS 14创建的操作系统环境。因此,调度器22向运行时环境10或OS 14提供信号以注册与自主执行上下文相关联的退出事件的通知。例如,调度器22向OS 14提供信号44,如图1B所示。在OS 14是Windows操作系统的情况下,调度器22可使得自主执行上下文的句柄被添加到等待阵列46并等待来自OS 14的信号。在其他实施例中,调度器22可使得该句柄被提供给其他合适的数据结构或存储在其他合适的数据结构中。
参考图4,由运行时环境10或OS 14确定是否已经接收到对与自主执行上下文相关联的退出事件的通知的请求,如框82所示。运行时环境10或OS 14从调度器22接收对与在分配给调度器22的处理资源上执行的自主执行上下文相关联的退出事件的通知的请求。例如,在图1B的示例中,OS 14从调度器22接收信号44。响应于接收到该请求,运行时环境10或OS 14将标识自主执行上下文的句柄添加到等待阵列46,如框84所示。在其他实施例中,运行时环境10或OS 14可将通知请求存储在其他合适的数据结构中。
回头参考图3,自主执行上下文在调度器22的处理资源上执行,如框68所示。在图1B的示例中,自主执行上下文26(1)在调度器22的虚拟处理器32(1)上执行。在自主执行上下文26(1)执行之前,虚拟处理器32(1)执行执行上下文34(1),如图1A所示。虚拟处理器32(1)可响应于执行上下文34(1)的完成、阻塞或其他中断(例如,显式退让或强制抢先)而变为可用于执行自主执行上下文26(1)。调度器22中的其他虚拟处理器32可以在虚拟处理器32(1)执行自主执行上下文26(1)的同时继续执行调度器22的执行上下文34。自主执行上下文可以在任何时刻停止在虚拟处理器32(1)上执行并退出运行时环境10和/或由OS 14创建的操作系统环境。
回头参考图4,由运行时环境10或OS 14确定是否已经发生与自主执行上下文相关联的退出事件,如框86所示。运行时环境10或OS 14在自主执行上下文退出或以其他方式终止和停止在调度器22的处理资源上执行时检测退出事件。如图1C的示例所示,虚拟处理器32(1)不再执行自主执行上下文26(1)。响应于确定已经发生退出事件,运行时环境10或OS 14向调度器22提供该退出事件的通知,如框88所示。例如,在图1C的示例中,OS 14向调度器22提供信号48。
回头参考图3,调度器22确定是否接收到对应于自主执行上下文的退出事件的通知,如框70所示。响应于接收到退出事件的通知(例如,接收到来自OS 14的信号48),调度器22标识并重新获取对执行自主执行上下文的处理资源的控制。调度器22在自主上下文所使用的处理资源上执行另一任务,如框72所示。
在图1D的示例中,调度器22重新获取对虚拟处理器32(1)的控制,并在重新获取对虚拟处理器32(1)的控制后使得与执行上下文38(1)相关联的任务40(1)在虚拟处理器32(1)上执行。执行上下文38(1)可以是解除阻塞的或新的执行上下文。
使用图3和4的方法,调度器22允许外部执行上下文用调度器22的处理资源来执行,同时确保调度器22在外部执行上下文退出后回收处理资源。
图5是示出被配置成实现包括调度器22的运行时环境10的计算机系统100的一实施例的框图,其中调度器22被配置成请求和接收与外部执行上下文相关联的退出事件通知。
计算机系统100包括一个或多个处理器封装102、存储器系统104、零个或更多输入/输出设备106、零个或更多显示设备108、零个或更多外围设备110、和零个或更多网络设备112。处理器封装102、存储器系统104、输入/输出设备106、显示设备108、外围设备110和网络设备112使用包括任何合适的类型、数量和配置的控制器、总线、接口、和/或其他有线或无线连接的一组互连114来进行通信。
计算机系统100表示出于通用或专用目的而配置的任何合适的处理设备。计算机系统100的示例包括服务器、个人计算机、膝上型计算机、图形输入板计算机、个人数字助理(PDA)、移动电话、和音频/视频设备。计算机系统100的组件(即,处理器封装102、存储器系统104、输入/输出设备106、显示设备108、外围设备110、网络设备112和互连114)可包含在公共外壳(未示出)中或任何合适数量的独立外壳(未示出)中。
处理器封装102包括硬件线程16(1)-16(M)。处理器封装102中的每一硬件线程16被配置成访问并执行存储在存储器系统104中的指令。指令可包括基本输入输出系统(BIOS)或固件(未示出)、OS 14(也在图1A-1D中示出)、运行时平台122、应用程序124和资源管理层18(也在图1A-1D中示出)。每一硬件线程16可结合或响应于从输入/输出设备106、显示设备108、外围设备110、和/或网络设备112接收到的信息来执行指令。
计算机系统100引导并执行OS 14。OS 14包括可由硬件线程16执行来管理计算机系统100的组件并提供允许应用程序124访问并使用该组件的一组功能的指令。在一实施例中,OS 14是Windows操作系统。在其他实施例中,OS 14是适于和计算机系统100一起使用的另一操作系统。
资源管理层18包括可结合OS 14执行以如上参考图1A-1D所述地分配包括硬件线程16的计算机系统100的资源的指令。资源管理层18可作为可为一个或多个应用程序124所用的功能库或者作为OS 14的一个集成部分被包括在计算机系统100中。
运行时平台122包括可结合OS 14和资源管理层18来执行以生成运行时环境10并向应用程序124提供运行时功能的指令。这些运行时功能包括如上参考图1A-1D所详细描述的调度器功能。运行时功能可作为应用程序124的一部分、作为对一个或多个应用程序124可用的功能库、或者作为OS 14和/或资源管理层18的一个集成部分被包括在计算机系统100中。
每一应用程序124包括可结合OS 14、资源管理层18和/或运行时平台122来执行以使计算机系统100执行所需操作的指令。每一应用程序124表示可与如由运行时平台122提供的调度器22一起执行的一个或多个进程,诸如如上所述的进程12。
存储器系统104包括被配置成存储指令和数据的任何合适的类型、数量和配置的易失性或非易失性存储设备。存储器系统104的存储设备表示存储包括OS 14、资源管理层18、运行时平台122和应用程序124的计算机可执行指令的计算机可读存储介质。这些指令可由计算机系统来执行以执行此处描述的OS 14、资源管理层18、运行时平台122和应用程序124的功能和方法。存储器系统104中的存储设备的示例包括硬盘驱动器、随机存取存储器(RAM)、只读存储器(ROM)、闪存驱动器和卡、以及磁盘和光盘。
存储器系统104存储从处理器封装102、输入/输出设备106、显示设备108、外围设备110和网络设备112接收的指令和数据。存储器系统104向处理器封装102、输入/输出设备106、显示设备108、外围设备110和网络设备112提供存储的指令和数据。
输入/输出设备106包括被配置成将指令或数据从用户输入到计算机系统100并将指令或数据从计算机系统100输出到用户的任何合适的类型、数量和配置的输入/输出设备。输入/输出设备106的示例包括键盘、鼠标、触摸垫、触摸屏、按钮、拨盘、旋钮和开关。
显示设备108包括被配置成向计算机系统100的用户输出文本和/或图形信息的任何合适的类型、数量和配置的显示设备。显示设备108的示例包括监视器、显示屏和投影仪。
外围设备110包括被配置成用计算机系统100中的一个或多个其他组件来操作以执行通用或专用处理功能的任何合适的类型、数量和配置的外围设备。
网络设备112包括被配置成允许计算机系统100通过一个或多个网络(未示出)进行通信的任何合适的类型、数量和配置的网络设备。网络设备112可根据任何合适的网络协议和/或配置来操作以允许计算机系统100将信息发送给网络或者从网络接收信息。
上述实施例允许任务调度器使用外部执行上下文(即,在该调度器的控制之外的上下文)来调度工作,而不会在外部执行上下文终止时耗尽虚拟化处理资源。通过这样做,可避免可能的昂贵的上下文切换并且可对所选外部执行上下文应用调度器22的所需调度策略。
尽管此处说明并描述了具体实施例,但本领域技术人员可以理解,可用各种替换和/或等价实现来替换此处示出并描述的具体实施例而不背离本发明的范围。本申请旨在覆盖此处讨论的具体实施例的任何改编或变型。因此,本发明旨在仅由权利要求书及其等效方案来限制。
Claims (15)
1.一种由在计算机系统(100)上执行的进程(12)的调度器(22)执行的方法,所述方法包括:
提供所述调度器的第一处理资源(16/32)以供第一执行上下文(26)使用,以使得所述第一处理资源不在所述调度器的控制下;
注册与所述第一外部上下文相关联的退出事件的通知;以及
响应于接收到所述退出事件的通知来重新获取对所述第一处理资源的控制。
2.如权利要求1所述的方法,其特征在于,还包括:
用所述第一处理资源来执行所述第一执行上下文。
3.如权利要求1所述的方法,其特征在于,还包括:
在重新获取对所述第一处理资源的控制之后在所述第一处理资源上执行所述调度器的任务(40)。
4.如权利要求3所述的方法,其特征在于,还包括:
在执行所述任务之前将所述任务与第二执行上下文(38)相关联。
5.如权利要求4所述的方法,其特征在于,所述进程创建所述第一执行上下文,并且其中所述调度器用所述调度器创建所述第二执行上下文。
6.如权利要求1所述的方法,其特征在于,还包括:
在提供所述第一处理资源以供所述第一执行上下文使用之前在所述第一处理资源上执行所述调度器的任务(36)。
7.如权利要求1所述的方法,其特征在于,还包括:
向操作系统(14)或运行时环境(10/122)中的一个注册与所述第一执行上下文相关联的退出事件的通知。
8.如权利要求1所述的方法,其特征在于,还包括:
在提供所述第一处理资源以供所述第一执行上下文使用之后并且在重新获取对所述第一处理资源的控制之前,在所述调度器的第二处理资源上执行所述调度器的任务(36)。
9.如权利要求1所述的方法,其特征在于,所述第一处理资源包括虚拟处理器(32)和硬件线程(16)。
10.一种存储计算机可执行指令的计算机可读存储介质(104),所述计算机可执行指令在由计算机系统(100)执行时执行一种方法,所述方法包括:
注册与提供给在所述计算机系统上执行的进程(12)中的调度器(22)的第一执行上下文(26)相关联的退出事件的通知;
在从所述调度器提供给所述第一执行上下文的处理资源(16/32)上执行所述第一执行上下文;以及
在接收到所述退出事件的通知后在所述处理资源上执行第一任务(40)。
11.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
在向所述调度器提供所述第一执行上下文之前用所述进程来创建所述第一执行上下文。
12.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
用所述调度器来创建第二执行上下文(38);以及
在执行所述第一任务之前将所述任务与所述第二执行上下文相关联。
13.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
将所述进程中的外部执行上下文转换成包括所述第一执行上下文的、获取对所述处理资源的控制的自主执行上下文。
14.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
向操作系统(14)或运行时环境(10/122)中的一个注册所述退出事件的通知。
15.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
当在所述第一处理资源上执行所述第一执行上下文时在所述调度器的第二处理资源(16/32)上执行所述调度器的第二任务(36)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/131,127 | 2008-06-02 | ||
US12/131,127 US9417914B2 (en) | 2008-06-02 | 2008-06-02 | Regaining control of a processing resource that executes an external execution context |
PCT/US2009/042612 WO2009148739A2 (en) | 2008-06-02 | 2009-05-01 | Regaining control of a processing resource that executes an external execution context |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102047217A true CN102047217A (zh) | 2011-05-04 |
Family
ID=41381481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801212071A Pending CN102047217A (zh) | 2008-06-02 | 2009-05-01 | 重新获取对执行外部执行上下文的处理资源的控制 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9417914B2 (zh) |
EP (1) | EP2286331A4 (zh) |
CN (1) | CN102047217A (zh) |
AU (1) | AU2009255464B2 (zh) |
BR (1) | BRPI0912357A2 (zh) |
MX (1) | MX2010012829A (zh) |
RU (1) | RU2494446C2 (zh) |
WO (1) | WO2009148739A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110998532A (zh) * | 2017-08-24 | 2020-04-10 | 华为技术有限公司 | 自适应无服务器功能管理 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572353B1 (en) * | 2009-09-21 | 2013-10-29 | Tilera Corporation | Condensed router headers with low latency output port calculation |
US20110289519A1 (en) * | 2010-05-21 | 2011-11-24 | Frost Gary R | Distributing workloads in a computing platform |
US9720708B2 (en) | 2011-08-19 | 2017-08-01 | Advanced Micro Devices, Inc. | Data layout transformation for workload distribution |
JP5933356B2 (ja) * | 2012-06-12 | 2016-06-08 | ルネサスエレクトロニクス株式会社 | コンピュータシステム |
US9740529B1 (en) * | 2013-12-05 | 2017-08-22 | The Mathworks, Inc. | High throughput synchronous resource-constrained scheduling for model-based design |
EP4134852A4 (en) * | 2020-04-10 | 2024-01-10 | Nippon Telegraph And Telephone Corporation | INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING METHOD, DATA PROCESSING APPARATUS AND PROGRAM |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020016809A1 (en) * | 2000-04-25 | 2002-02-07 | Icplanet Acquisition Corporation | System and method for scheduling execution of cross-platform computer processes |
US20060017969A1 (en) * | 2004-07-22 | 2006-01-26 | Ly An V | System and method for managing jobs in heterogeneous environments |
US20060112377A1 (en) * | 2004-09-17 | 2006-05-25 | Andre Nacul | Phantom serializing compiler and method of operation of same |
CN1842769A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 用于在多线程微处理器中对并行指令流进行初始化的指令 |
US20080077928A1 (en) * | 2006-09-27 | 2008-03-27 | Kabushiki Kaisha Toshiba | Multiprocessor system |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI91456C (fi) * | 1992-07-29 | 1994-06-27 | Nokia Telecommunications Oy | Menetelmä tietokoneessa varattujen resurssien hallitsemiseksi |
US5692193A (en) * | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
US6725188B1 (en) * | 2000-04-03 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method of cleanup after termination of a process under a simulated operating system |
EP1199632A1 (en) * | 2000-10-20 | 2002-04-24 | Sun Microsystems, Inc. | Method and apparatus for resource access synchronization |
US7234139B1 (en) * | 2000-11-24 | 2007-06-19 | Catharon Productions, Inc. | Computer multi-tasking via virtual threading using an interpreter |
US6574718B2 (en) * | 2001-02-28 | 2003-06-03 | International Business Machines Corporation | Excessive spin detection and avoidance for systems using a least recently used page replacement algorithm |
US20020133530A1 (en) * | 2001-03-15 | 2002-09-19 | Maarten Koning | Method for resource control including resource stealing |
US7191440B2 (en) * | 2001-08-15 | 2007-03-13 | Intel Corporation | Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor |
US6779065B2 (en) | 2001-08-31 | 2004-08-17 | Intel Corporation | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads |
FI116166B (fi) * | 2002-06-20 | 2005-09-30 | Nokia Corp | Menetelmä ja järjestelmä sovellusistuntojen suorittamiseksi elektroniikkalaitteessa, ja elektroniikkalaite |
US7143412B2 (en) * | 2002-07-25 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimizing performance in a multi-processing system |
US7200846B2 (en) * | 2002-08-05 | 2007-04-03 | Sun Microsystems, Inc. | System and method for maintaining data synchronization |
US20040103414A1 (en) * | 2002-11-27 | 2004-05-27 | Vomlehn David M. | Method and apparatus for interprocess communications |
US7181741B2 (en) * | 2003-01-30 | 2007-02-20 | Hewlett-Packard Development Company, L.P. | Apparatus and method to minimize blocking overhead in upcall based MxN threads |
US20050210472A1 (en) * | 2004-03-18 | 2005-09-22 | International Business Machines Corporation | Method and data processing system for per-chip thread queuing in a multi-processor system |
US7721291B2 (en) * | 2004-10-15 | 2010-05-18 | International Business Machines Corporation | Apparatus, system, and method for automatically minimizing real-time task latency and maximizing non-real time task throughput |
US20060130062A1 (en) * | 2004-12-14 | 2006-06-15 | International Business Machines Corporation | Scheduling threads in a multi-threaded computer |
US7797704B2 (en) * | 2005-03-30 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | System and method for performing work by one of plural threads using a lockable resource |
US7904903B2 (en) * | 2005-06-30 | 2011-03-08 | Intel Corporation | Selective register save and restore upon context switch using trap |
JP4367856B2 (ja) * | 2005-07-07 | 2009-11-18 | レノボ シンガポール プライヴェート リミテッド | プロセス制御システム及びその制御方法 |
US20070101326A1 (en) * | 2005-10-27 | 2007-05-03 | Hewlett-Packard Development Company, L.P. | Dynamic change of thread contention scope assignment |
US7434003B2 (en) * | 2005-11-15 | 2008-10-07 | Microsoft Corporation | Efficient operating system operation on a hypervisor |
US7945913B2 (en) * | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
US20070204268A1 (en) * | 2006-02-27 | 2007-08-30 | Red. Hat, Inc. | Methods and systems for scheduling processes in a multi-core processor environment |
US8001549B2 (en) * | 2006-04-27 | 2011-08-16 | Panasonic Corporation | Multithreaded computer system and multithread execution control method |
US20070256078A1 (en) * | 2006-04-28 | 2007-11-01 | Falk Nathan B | Resource reservation system, method and program product used in distributed cluster environments |
US8010966B2 (en) * | 2006-09-27 | 2011-08-30 | Cisco Technology, Inc. | Multi-threaded processing using path locks |
US20080313639A1 (en) * | 2007-06-13 | 2008-12-18 | Krishna Kumar | Policy based scheduling of software applications |
US8584138B2 (en) * | 2007-07-30 | 2013-11-12 | Hewlett-Packard Development Company, L.P. | Direct switching of software threads by selectively bypassing run queue based on selection criteria |
US8122449B2 (en) * | 2007-09-07 | 2012-02-21 | International Business Machines Corporation | Determining whether to retain or terminate a thread based on a minimum number of threads in a thread pool and a maximum number of threads allowed waiting on the channel |
TWI462011B (zh) * | 2007-12-28 | 2014-11-21 | Accton Technology Corp | 程序之執行緒群組管理方法 |
US8302102B2 (en) * | 2008-02-27 | 2012-10-30 | International Business Machines Corporation | System utilization through dedicated uncapped partitions |
US8392913B2 (en) * | 2008-03-28 | 2013-03-05 | International Business Machines Corporation | Method and apparatus for threaded background function support |
US8561072B2 (en) * | 2008-05-16 | 2013-10-15 | Microsoft Corporation | Scheduling collections in a scheduler |
US8566830B2 (en) * | 2008-05-16 | 2013-10-22 | Microsoft Corporation | Local collections of tasks in a scheduler |
-
2008
- 2008-06-02 US US12/131,127 patent/US9417914B2/en active Active
-
2009
- 2009-05-01 EP EP09758902A patent/EP2286331A4/en not_active Ceased
- 2009-05-01 AU AU2009255464A patent/AU2009255464B2/en not_active Ceased
- 2009-05-01 WO PCT/US2009/042612 patent/WO2009148739A2/en active Application Filing
- 2009-05-01 CN CN2009801212071A patent/CN102047217A/zh active Pending
- 2009-05-01 RU RU2010149275/08A patent/RU2494446C2/ru not_active IP Right Cessation
- 2009-05-01 BR BRPI0912357A patent/BRPI0912357A2/pt not_active Application Discontinuation
- 2009-05-01 MX MX2010012829A patent/MX2010012829A/es active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020016809A1 (en) * | 2000-04-25 | 2002-02-07 | Icplanet Acquisition Corporation | System and method for scheduling execution of cross-platform computer processes |
CN1842769A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 用于在多线程微处理器中对并行指令流进行初始化的指令 |
US20060017969A1 (en) * | 2004-07-22 | 2006-01-26 | Ly An V | System and method for managing jobs in heterogeneous environments |
US20060112377A1 (en) * | 2004-09-17 | 2006-05-25 | Andre Nacul | Phantom serializing compiler and method of operation of same |
US20080077928A1 (en) * | 2006-09-27 | 2008-03-27 | Kabushiki Kaisha Toshiba | Multiprocessor system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110998532A (zh) * | 2017-08-24 | 2020-04-10 | 华为技术有限公司 | 自适应无服务器功能管理 |
CN110998532B (zh) * | 2017-08-24 | 2023-06-02 | 华为技术有限公司 | 自适应无服务器功能管理 |
Also Published As
Publication number | Publication date |
---|---|
EP2286331A2 (en) | 2011-02-23 |
RU2010149275A (ru) | 2012-06-10 |
MX2010012829A (es) | 2010-12-14 |
US9417914B2 (en) | 2016-08-16 |
WO2009148739A3 (en) | 2010-03-04 |
EP2286331A4 (en) | 2012-10-03 |
BRPI0912357A2 (pt) | 2015-10-06 |
AU2009255464B2 (en) | 2014-05-01 |
WO2009148739A2 (en) | 2009-12-10 |
RU2494446C2 (ru) | 2013-09-27 |
AU2009255464A1 (en) | 2009-12-10 |
US20090300636A1 (en) | 2009-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102047218B (zh) | 进程中的调度器实例 | |
CN102027447B (zh) | 调度器中的局部任务集合 | |
CN101268445B (zh) | 用于向多核环境中的应用程序提供实时线程服务的方法、装置 | |
CN102027452B (zh) | 调度器中的调度集合 | |
CN102047217A (zh) | 重新获取对执行外部执行上下文的处理资源的控制 | |
WO2019218708A1 (zh) | 一种任务处理方法及处理装置、计算机系统 | |
CN102402419A (zh) | 用所选执行运行时执行的用户代码的运行时不可知表示 | |
KR102338849B1 (ko) | 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템 | |
US9959134B2 (en) | Request processing using VM functions | |
CN103455376A (zh) | 对操作系统中多个进程对现场可编程门阵列的使用的管理 | |
US8959517B2 (en) | Cancellation mechanism for cancellable tasks including stolen task and descendent of stolen tasks from the cancellable taskgroup | |
US9367350B2 (en) | Meta-scheduler with meta-contexts | |
JP2019057213A (ja) | 調整プログラム、調整装置および調整方法 | |
US20090300638A1 (en) | Memory allocators corresponding to processor resources | |
US20090300628A1 (en) | Log queues in a process | |
CN100538649C (zh) | 用于分发分派窗内的未使用的处理器循环的方法和系统 | |
US20130125131A1 (en) | Multi-core processor system, thread control method, and computer product | |
CN105677481A (zh) | 一种数据处理方法、系统及电子设备 | |
US10782970B1 (en) | Scalable multi-producer and single-consumer progressive chunked queue | |
US8806180B2 (en) | Task execution and context switching in a scheduler | |
US9304831B2 (en) | Scheduling execution contexts with critical regions | |
CN116028204B (zh) | 进程管控方法和电子设备 | |
CN109962788A (zh) | 多控制器调度方法、装置和系统及计算机可读存储介质 | |
CN112905267B (zh) | 虚拟机接入协程库的方法、装置及设备 | |
US9384063B2 (en) | Eliding synchronization in a concurrent data structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150729 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150729 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110504 |
|
RJ01 | Rejection of invention patent application after publication |