重新获取对执行外部执行上下文的处理资源的控制的制作方法

文档序号:6593886阅读:139来源:国知局
专利名称:重新获取对执行外部执行上下文的处理资源的控制的制作方法
重新获取对执行外部执行上下文的处理资源的控制背景在计算机系统中执行的进程可包括调度进程的任务以便在计算机系统中执行的 执行上下文调度器。调度器可创建执行上下文(例如,线程、光纤或子进程)以执行任务。 在执行期间,调度器维护对这些执行上下文的控制并维护对分配给该调度器的处理资源的 控制。调度器通常不具有对在该调度器之外创建的执行上下文(即,外部执行上下文) 的控制。如果调度器允许外部执行上下文用该调度器的处理资源来执行,则外部执行上下 文获取对处理资源的控制。该外部执行上下文可以不包括用于将对处理资源的控制返回给 调度器的机制。结果,调度器可能丢失执行外部执行上下文的处理资源。概述提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所 要求保护的主题的范围。计算机系统的进程中的调度器允许外部执行上下文在分配给该调度器的处理资 源上执行。调度器向外部执行上下文提供对处理资源的控制。调度器注册与外部执行上下 文相关联的退出事件的通知。响应于接收到已发生退出事件的通知,调度器重新获取对处 理资源的控制并使得由该处理资源执行与该调度器所控制的执行上下文相关联的任务。附图简述包括附图来提供了对各实施例的进一步理解,且这些附图被合并在本发明书内并 构成其一部分。附图示出各实施例,并且与说明书一起用于解释本发明的原理。其他实施 例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附 图的元素不一定相对于彼此而缩放。相同的附图标记指代对应的类似部分。

图1A-1D是示出被配置成请求和接收与运行时环境中的外部执行上下文相关联 的退出事件通知的调度器的各实施例的框图。图2是示出供在调度器中使用的调度组的一实施例的框图。图3是示出用于请求和接收与外部执行上下文相关联的退出事件通知的方法的 流程图。图4是示出用于提供退出事件通知的方法的一实施例的流程图。图5是示出被配置成实现包括调度器的运行时环境的计算机系统的一实施例的 框图,该调度器被配置成请求和接收与外部执行上下文相关联的退出事件通知。详细描述在以下详细描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作 为示例示出了可在其中实践本发明的各特定实施例。就此,诸如“顶部”、“底部”、“前方”、 “后方”、“前导”、“尾部”等的方向性术语参考正在描述的附图的方向来使用。因为实施例的 各组件可位于多个不同的方向,所以方向性术语出于说明的目的来使用而不是限制。可以 理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本发明的范围。因此,以下详细描述并不旨在限制,并且本发明的范围由所附权利要求来限定。应该理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。图1A-1D是示出运行时环境10的进程12中的调度器22的各实施例的框图。调 度器22被配置成请求和接收与外部执行上下文沈相关联的退出事件通知参考图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 提供执行上下文。如图IA所示,OS 14向调度器22提供执行上下文34(1)-34(N)和一组38,其中N是大于或等于一的整数并且表示第N个执行上下文34 (N)。OS 14还 向进程12提供执行上下文沈(1) -26 (P),其中P是大于或等于一的整数并且表示第P个执 行上下文26 (P)。硬件线程16驻留在计算机系统的一组或者一个或多个处理器封装(例如,图5中 示出且在下文更详细地描述的处理器封装10 的执行核中。每一硬件线程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是正在执行的、可运行的(例如,响应于变为解除阻塞或被添加到调 度器2 还是被阻塞的状态信息。正在执行的执行上下文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、工作集合M、和一组零个或 多个工作窃取队列56。可运行集合52包含解除阻塞的执行上下文38的列表。当执行上下 文变为解除阻塞时,调度器22将执行上下文38添加至可运行集合52。已实现的任务集合 53包含可能具有或可能不具有相关联的执行上下文38的已实现的任务40的列表(例如, 未启动的代理)。当进程12将新的可运行任务呈现给调度器22时,调度器22将已实现的 任务添加至已实现的任务集合53。工作集合M包含如由箭头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外部的外部执行上下文沈直接在属于调度器22的虚拟处理器32上 执行。当外部执行上下文26直接在属于调度器22的虚拟处理器32上执行时,调度器22 将对虚拟处理器32的控制移交给外部执行上下文26。通过这样做,调度器22可以避免可 能的昂贵的上下文切换并允许对外部外部执行上下文26应用调度器22的调度策略。然而,因为外部执行上下文沈不在调度器22的控制下,所以外部执行上下文沈 不将虚拟处理器32返回给调度器22。相反,外部执行上下文沈继续使用虚拟处理器32, 直到外部执行上下文沈通过退出运行时环境10或由操作系统14创建的操作系统环境来 停止执行。当外部执行上下文沈停止执行时,调度器22回收外部执行上下文沈所使用的 虚拟处理器32。为了回收外部执行上下文沈所使用的虚拟处理器32,调度器22向运行时环境10 或OS 14注册与外部执行上下文沈相关联的退出事件的通知。响应于接收到来自运行时 环境10或OS 14的已经发生退出事件的通知,调度器22重新获取对虚拟处理器32的控制 并使得由虚拟处理器32来执行与由调度器22控制的执行上下文34或38相关联的任务40 或42。图3是示出用于请求和接收与外部执行上下文沈相关联的退出事件通知的方法 的流程图。如由调度器22执行的图3的方法将参考图1A-1D的实施例来描述。另外,由运 行时环境10或OS 14执行的功能将参考图4描述。图4是示出用于提供退出事件通知的 方法的一实施例的流程图。在图3中,调度器22确定调度器22中是否包括外部执行上下文,如框62所示。如 此处所使用的,术语“外部执行上下文”指的是由进程12而不是由调度器22创建的执行上 下文。进程12由此控制外部执行上下文的执行。外部执行上下文可响应于生成任务以供 调度器22执行,或通过显式地创建调度器22来被包括在调度器22中。参考图IA的示例,调度器22确定调度器22中是否包括外部执行上下文沈中的 任一个。进程12通过向OS 14提供请求来创建外部执行上下文沈。因为这些外部执行上 下文26是由进程12创建的,所以进程12,而不是调度器22控制外部执行上下文沈的执 行。相反,调度器22通过向OS 14提供请求来创建执行上下文34和38。因此,调度器22 控制执行上下文;34和38的执行。如果调度器22中包括外部执行上下文,则调度器22将该外部执行上下文转换成 自主执行上下文,如框64所示。如此处所使用的,自主执行上下文是在调度器22的处理资 源上执行但不在调度器22的控制下的执行上下文。因此,调度器22提供调度器22的处理 资源以供自主执行上下文使用,以便允许该自主执行上下文在该处理资源上执行。通过这 样做,调度器22放弃对处理资源的控制,以使得该处理资源在自主执行上下文的控制下, 而不在调度器22的控制下。参考图IB的示例,调度器22确定调度器22中是否包括外部执行上下文沈(1)。 调度器22将外部执行上下文沈(1)转换成自主执行上下文沈(1)并将虚拟处理器32(1) 提供给自主执行上下文沈(1)。虚拟处理器32(1)执行自主执行上下文沈(1)的至少一个 任务28 (I)0
调度器22注册与自主执行上下文相关联的退出事件的通知,如框66所示。自主 执行上下文执行进程12中的调度器22的任务并且可以不包括用于将对处理资源的控制返 回给调度器22的机制。自主执行上下文继续在调度器22的处理资源上执行,除非自主执 行上下文显式地脱离调度器22(例如,经由运行时环境10所提供的API)。自主执行上下 文可以在任何时刻退出运行时环境10和/或由OS 14创建的操作系统环境。因此,调度器 22向运行时环境10或OS 14提供信号以注册与自主执行上下文相关联的退出事件的通知。 例如,调度器22向OS 14提供信号44,如图IB所示。在OS 14是Windows操作系统的情况 下,调度器22可使得自主执行上下文的句柄被添加到等待阵列46并等待来自OS 14的信 号。在其他实施例中,调度器22可使得该句柄被提供给其他合适的数据结构或存储在其他 合适的数据结构中。参考图4,由运行时环境10或OS 14确定是否已经接收到对与自主执行上下文相 关联的退出事件的通知的请求,如框82所示。运行时环境10或OS 14从调度器22接收对 与在分配给调度器22的处理资源上执行的自主执行上下文相关联的退出事件的通知的请 求。例如,在图IB的示例中,OS 14从调度器22接收信号44。响应于接收到该请求,运行 时环境10或OS 14将标识自主执行上下文的句柄添加到等待阵列46,如框84所示。在其 他实施例中,运行时环境10或OS 14可将通知请求存储在其他合适的数据结构中。回头参考图3,自主执行上下文在调度器22的处理资源上执行,如框68所示。在 图IB的示例中,自主执行上下文沈(1)在调度器22的虚拟处理器32(1)上执行。在自主 执行上下文26(1)执行之前,虚拟处理器32(1)执行执行上下文34(1),如图IA所示。虚拟 处理器32(1)可响应于执行上下文34(1)的完成、阻塞或其他中断(例如,显式退让或强制 抢先)而变为可用于执行自主执行上下文沈(1)。调度器22中的其他虚拟处理器32可以 在虚拟处理器32(1)执行自主执行上下文沈(1)的同时继续执行调度器22的执行上下文 34。自主执行上下文可以在任何时刻停止在虚拟处理器32(1)上执行并退出运行时环境10 和/或由OS 14创建的操作系统环境。回头参考图4,由运行时环境10或OS 14确定是否已经发生与自主执行上下文相 关联的退出事件,如框86所示。运行时环境10或OS 14在自主执行上下文退出或以其他 方式终止和停止在调度器22的处理资源上执行时检测退出事件。如图IC的示例所示,虚 拟处理器32(1)不再执行自主执行上下文沈(1)。响应于确定已经发生退出事件,运行时 环境10或OS 14向调度器22提供该退出事件的通知,如框88所示。例如,在图IC的示例 中,OS 14向调度器22提供信号48。回头参考图3,调度器22确定是否接收到对应于自主执行上下文的退出事件的通 知,如框70所示。响应于接收到退出事件的通知(例如,接收到来自OS 14的信号48),调 度器22标识并重新获取对执行自主执行上下文的处理资源的控制。调度器22在自主上下 文所使用的处理资源上执行另一任务,如框72所示。在图ID的示例中,调度器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)或固件(未示出)、0S 14(也在图1A-1D中示出)、运行时平台122、应用程序IM和 资源管理层18 (也在图1A-1D中示出)。每一硬件线程16可结合或响应于从输入/输出设 备106、显示设备108、外围设备110、和/或网络设备112接收到的信息来执行指令。计算机系统100引导并执行OS 14。OS 14包括可由硬件线程16执行来管理计算 机系统100的组件并提供允许应用程序IM访问并使用该组件的一组功能的指令。在一实 施例中,OS 14是Windows操作系统。在其他实施例中,OS 14是适于和计算机系统100 — 起使用的另一操作系统。资源管理层18包括可结合OS 14执行以如上参考图1A-1D所述地分配包括硬件 线程16的计算机系统100的资源的指令。资源管理层18可作为可为一个或多个应用程序 124所用的功能库或者作为OS 14的一个集成部分被包括在计算机系统100中。运行时平台122包括可结合OS 14和资源管理层18来执行以生成运行时环境10 并向应用程序IM提供运行时功能的指令。这些运行时功能包括如上参考图1A-1D所详细 描述的调度器功能。运行时功能可作为应用程序124的一部分、作为对一个或多个应用程 序1 可用的功能库、或者作为OS 14和/或资源管理层18的一个集成部分被包括在计算 机系统100中。每一应用程序IM包括可结合OS 14、资源管理层18和/或运行时平台122来执 行以使计算机系统100执行所需操作的指令。每一应用程序IM表示可与如由运行时平台 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的所需调度 策略。尽管此处说明并描述了具体实施例,但本领域技术人员可以理解,可用各种替换 和/或等价实现来替换此处示出并描述的具体实施例而不背离本发明的范围。本申请旨在 覆盖此处讨论的具体实施例的任何改编或变型。因此,本发明旨在仅由权利要求书及其等 效方案来限制。
权利要求
1.一种由在计算机系统(100)上执行的进程(1 的调度器0 执行的方法,所述方 法包括提供所述调度器的第一处理资源(16/32)以供第一执行上下文06)使用,以使得所述 第一处理资源不在所述调度器的控制下;注册与所述第一外部上下文相关联的退出事件的通知;以及响应于接收到所述退出事件的通知来重新获取对所述第一处理资源的控制。
2.如权利要求1所述的方法,其特征在于,还包括 用所述第一处理资源来执行所述第一执行上下文。
3.如权利要求1所述的方法,其特征在于,还包括在重新获取对所述第一处理资源的控制之后在所述第一处理资源上执行所述调度器 的任务(40)。
4.如权利要求3所述的方法,其特征在于,还包括在执行所述任务之前将所述任务与第二执行上下文(38)相关联。
5.如权利要求4所述的方法,其特征在于,所述进程创建所述第一执行上下文,并且其 中所述调度器用所述调度器创建所述第二执行上下文。
6.如权利要求1所述的方法,其特征在于,还包括在提供所述第一处理资源以供所述第一执行上下文使用之前在所述第一处理资源上 执行所述调度器的任务(36)。
7.如权利要求1所述的方法,其特征在于,还包括向操作系统(14)或运行时环境(10/12 中的一个注册与所述第一执行上下文相关联 的退出事件的通知。
8.如权利要求1所述的方法,其特征在于,还包括在提供所述第一处理资源以供所述第一执行上下文使用之后并且在重新获取对所述 第一处理资源的控制之前,在所述调度器的第二处理资源上执行所述调度器的任务(36)。
9.如权利要求1所述的方法,其特征在于,所述第一处理资源包括虚拟处理器(32)和 硬件线程(16)。
10.一种存储计算机可执行指令的计算机可读存储介质(104),所述计算机可执行指 令在由计算机系统(100)执行时执行一种方法,所述方法包括注册与提供给在所述计算机系统上执行的进程(1 中的调度器0 的第一执行上下 文06)相关联的退出事件的通知;在从所述调度器提供给所述第一执行上下文的处理资源(16/3 上执行所述第一执 行上下文;以及在接收到所述退出事件的通知后在所述处理资源上执行第一任务GO)。
11.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括 在向所述调度器提供所述第一执行上下文之前用所述进程来创建所述第一执行上下文。
12.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括 用所述调度器来创建第二执行上下文(38);以及在执行所述第一任务之前将所述任务与所述第二执行上下文相关联。
13.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括将所述进程中的外部执行上下文转换成包括所述第一执行上下文的、获取对所述处理 资源的控制的自主执行上下文。
14.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括 向操作系统(14)或运行时环境(10/122)中的一个注册所述退出事件的通知。
15.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括 当在所述第一处理资源上执行所述第一执行上下文时在所述调度器的第二处理资源(16/32)上执行所述调度器的第二任务(36)。
全文摘要
计算机系统的进程中的调度器允许外部执行上下文在分配给该调度器的处理资源上执行。调度器向外部执行上下文提供对处理资源的控制。调度器注册与外部执行上下文相关联的退出事件的通知。响应于接收到已发生退出事件的通知,调度器重新获取对处理资源的控制并使得由该处理资源执行与该调度器所控制的执行上下文相关联的任务。
文档编号G06F9/46GK102047217SQ200980121207
公开日2011年5月4日 申请日期2009年5月1日 优先权日2008年6月2日
发明者G·弗纳德斯, P·林塞斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1