CN102047218A - 进程中的调度器实例 - Google Patents

进程中的调度器实例 Download PDF

Info

Publication number
CN102047218A
CN102047218A CN2009801212404A CN200980121240A CN102047218A CN 102047218 A CN102047218 A CN 102047218A CN 2009801212404 A CN2009801212404 A CN 2009801212404A CN 200980121240 A CN200980121240 A CN 200980121240A CN 102047218 A CN102047218 A CN 102047218A
Authority
CN
China
Prior art keywords
scheduler
group
task
scheduler example
context
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
Application number
CN2009801212404A
Other languages
English (en)
Other versions
CN102047218B (zh
Inventor
P·林塞斯
G·弗纳德斯
N·古斯塔夫松
R·莫洛伊
R·帕蒂尔
P·卢奇多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ivalley Holding Co Ltd
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102047218A publication Critical patent/CN102047218A/zh
Application granted granted Critical
Publication of CN102047218B publication Critical patent/CN102047218B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

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)

Abstract

提供了在进程中创建第一和第二调度器实例的计算机系统的运行时环境。每一调度器实例包括已分配的处理资源并被指派要执行的一组任务。每一调度器实例使用已分配的处理资源来调度要执行的任务以执行进程的工作。

Description

进程中的调度器实例
背景
计算机系统中执行的进程常常具有不同优先级的任务。为了按所需的来运行,进程可花费大量的开销来确保基于任务的优先级将合适的处理资源分配到任务。这一开销可包括使用调度进程的任务以便在计算机系统中执行的调度器。
带有单个调度器的进程通常在该进程所生成的所有任务之间共享处理资源并将相同的调度策略应用于所有任务。一般而言,进程不具有通过将不同的调度策略应用于任务的子集来直接对子集区分优先级的能力。虽然开发者可划分任务的子集并将该划分指派到操作系统所提供的执行上下文,但这种方法可迫使开发者设计在动态分配资源的计算机系统中可能不是最优的复杂的基础结构。
概述
提供本发明内容是为了以精简的形式介绍将在以下具体实施方式中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供了在进程中创建多个调度器实例的计算机系统的运行时环境。每一调度器实例包括已分配的处理资源并且被指派要执行的一组任务。调度器实例使用已分配的处理资源来调度要执行的任务以执行进程的工作。另外,一个调度器实例中的任务可创建嵌套调度器实例。
附图简述
包括附图来提供了对各实施例的进一步理解,且这些附图被合并在本发明书内并构成其一部分。附图示出各实施例,并且与说明书一起用于解释本发明的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此而缩放。相同的附图标记指代对应的类似部分。
图1是示出带有包括多个调度器实例的进程的运行时环境的一实施例的框图。
图2是示出用于在进程中创建多个调度器实例的方法的一实施例的流程图。
图3是示出用于将执行上下文指派到进程中的调度器实例的方法的一实施例的流程图。
图4A-4B是示出进程中的嵌套调度器实例的实施例的框图。
图5是示出用于在进程中创建嵌套调度器实例的方法的一实施例的流程图。
图6是示出供在调度器中使用的调度组的一实施例的框图。
图7是示出被配置成实现带有包括多个调度器实例的进程的运行时环境的计算机系统的一实施例的框图。
详细描述
在以下详细描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本发明的各特定实施例。就此,诸如“顶部”、“底部”、“前方”、“后方”、“前导”、“尾部”等的方向性术语参考正在描述的附图的方向来使用。因为实施例的各组件可位于多个不同的方向,所以方向性术语出于说明的目的来使用而不是限制。可以理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本发明的范围。因此,以下详细描述并不旨在限制,并且本发明的范围由所附权利要求来限定。
应该理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。
图1是示出带有包括多个调度器实例22(1)-22(N)的进程12A的运行时环境10的一实施例的框图,其中N是大于或等于2的整数且表示第N个调度器实例22(N)。
运行时环境10表示计算机系统中的运行时操作模式,如图7中示出且在下文中更详细地描述的计算机系统100,其中该计算机系统正在执行指令。计算机系统从诸如图7中示出且在下文中更详细描述的运行时平台122等运行时平台中生成运行时环境10。
运行时环境10包括至少一个调用的进程12A、资源管理层14和一组硬件线程16(1)-16(M),其中M是大于或等于1的整数且表示第M个硬件线程16(M)。运行时环境10使用资源管理层14和硬件线程16(1)-16(M)来允许执行来自进程12A的任务以及来自与进程12A共存的任何其他进程的任务(未示出)。运行时环境10结合资源管理层14来操作以允许进程12A获得计算机系统的处理器和其他资源(例如,硬件线程16(1)-16(M))。运行时环境10还结合资源管理层14来操作以允许多个调度器实例22(1)-22(N)共存于进程12A中。
运行时环境10包括生成每个调度器实例22的调度器功能。在一个实施例中,调度器功能被实现为调度器应用程序编程接口(API)。在其他实施例中,调度器功能可使用其他合适的编程构造来实现。当进程12A被调用时,调度器功能在进程12A或另一共存进程中创建调度器实例22,其中每个调度器实例22操作用于调度进程12A的任务以供一个或多个硬件线程16(1)-16(M)执行。运行时环境10可利用应用程序或库开发者使用知晓调度器功能所提供的设施的附随工具在其程序(例如,进程12A)中表达的精细粒度并发性。
进程12A包括对主存一个或多个执行上下文(即线程)的处理和其他资源的分配。进程12A从资源管理层14获得对计算机系统中的处理和其他资源(例如,硬件线程16(1)-16(M))的访问。进程12A使用该处理和其他资源来使任务被执行。
进程12A生成可变长度的任务形式的工作,其中每一任务与调度器实例22中的执行上下文相关联。每一任务包括当由计算机系统执行时执行工作单元的指令序列。每一执行上下文形成在已分配的处理资源上执行相关联的任务的线程(或诸如子进程等的类似OS概念)。每一执行上下文包括程序状态信息和机器状态信息。执行上下文可在没有剩余任务要执行的情况下终止。对于每一任务,运行时环境10和/或进程12A或者将任务指派到调度器实例22以被调度来执行,或者以其他方式使该任务在不使用调度器实例22的情况下被执行。
进程12A可被配置成在基于诸如栈模型或解释器模型等任何合适的执行模型的计算机环境中操作,且可表示任何合适类型的代码,如应用程序、库函数或操作系统服务。进程12A具有与包括定义的存储器地址空间的一组已分配的资源相关联的程序状态和机器状态。进程12A相对于运行时环境10中的任何共存进程自主地或基本自主地执行。因此,进程12A不会不利地更改共存进程的程序状态或分配到共存进程的任何资源的机器状态。类似地,共存进程不会不利地更改进程12A的程序状态或分配到进程12A的任何资源的机器状态。
资源管理层14通过将一个或多个硬件线程16指派到进程12A来将处理资源分配到进程12A。资源管理层14与图1的实施例中的计算机环境的操作系统(未在图1中示出)分开存在。在其他实施例中,资源管理层14或其部分或全部功能可被包括在操作系统中。
硬件线程16驻留在计算机系统的一组或者一个或多个处理器封装(例如,图7中示出且在下文更详细地描述的处理器封装102)的执行核中。每一硬件线程16被配置成独立于或基本独立于其他执行核来执行指令,且包括机器状态。硬件线程16可被包括在单个处理器封装中,或者可分布在多个处理器封装上。处理器封装中的每一执行核可包括一个或多个硬件线程16。
处理器12A隐式地或显式地使得经由运行时环境10提供的调度器功能来创建每一调度器实例22(1)-22(N)。当进程12A使用计算机系统中可用的API或编程语言特征时,可隐式地创建调度器实例22。响应于API或编程语言特征,运行时环境10创建带有默认策略37的调度器实例22。为了显式地创建调度器22,进程12A可调用运行时环境10提供的调度器功能并为调度器实例22指定一个或多个策略37。进程12A可在整个执行过程中增加或减少调用的调度器实例22的数量。
每一调度器实例22以对于进程12透明的方式与资源管理层14进行交互来协商计算机系统的处理和其他资源。资源管理层14基于供需和调度器实例22的任何策略37来将硬件线程16分配到调度器实例22。
在图1示出的实施例中,调度器实例22通过创建形成底层硬件线程16的抽象的虚拟处理器32来管理处理资源。每一调度器实例22包括一组虚拟处理器32(1)-32(P),其中每个P是大于或等于1的整数且表示调度器实例22中的第P个虚拟处理器32(P)。每一调度器实例22在进程12A的执行的各个点可具有相同或不同数量的虚拟处理器32(即,每一P(1)-P(M)可以少于、多于、或等于在进程12A的执行期间的任何其他P(1)-P(M))。每一调度器实例22通过将每一虚拟处理器32映射到硬件线程16来将虚拟处理器32复用到硬件线程16上。每一调度器实例22可将一个以上的虚拟处理器32映射到特定硬件线程16上,但只将一个硬件线程16映射到每一虚拟处理器32。在其他实施例中,每一调度器实例22以其他合适的方式来管理处理资源以使得硬件线程16执行进程12的指令。
每一调度器实例22中的执行上下文集包括具有正在由相应的虚拟处理器32(1)-32(P)执行的相应的相关联任务36(1)-36(P)的一组执行上下文34(1)-34(P),以及在进程12A的执行期间的任何点的一组零个或多个执行上下文38。每一执行上下文34和38包括指示执行上下文34或38是正在执行的、可运行的(例如,响应于变为解除阻塞或被添加到调度器实例22)还是被阻塞的状态信息。正在执行的执行上下文34已经被附加到虚拟处理器32且当前正在执行。可运行的执行上下文38包括相关联的任务40且准备好由可用虚拟处理器32来执行。被阻塞的执行上下文38还包括相关联的任务40且正在等待正由另一执行上下文34生成的或者将由另一执行上下文38生成的数据、消息或事件。
在虚拟处理器32上执行的每一执行上下文34可在其执行过程中生成按任何合适的方式来组织(例如,添加到工作队列(未在图1中示出))的附加任务42。在一实施例中,可以通过使用运行时环境10提供的应用程序编程接口(API)或编程语言特征以及相应的工具来创建工作。当处理资源可为调度器实例22所用时,任务被指派到执行上下文34或38,执行上下文34或38在拾取新任务之前将其在虚拟处理器32上执行至完成或执行至阻塞点(例如,等待消息或窃取子任务完成)。当任务解除阻塞时,任务被重新调度来在可用虚拟处理器上执行,该任务可能被给予选择该任务在阻塞之前在其中执行此任务的硬件线程16上的虚拟处理器32的优先级,希望存储器分层结构(即,高速缓存分层结构)已经包含了可最优重用的数据。在虚拟处理器32上执行的执行上下文34还可通过生成将由其他执行上下文38使用的数据、消息或事件来对其他执行上下文38解除阻塞。
每一调度器实例22中的每一任务可以是实现的(例如,实现的任务36和40),这指示执行上下文34或38已经或将要被附加到该任务且该任务准备好执行。实现的任务通常包括解除阻塞的执行上下文和调度的代理。未实现的任务被称为未实现的。未实现的任务(例如,任务42)可作为父任务的执行所生成的子任务来创建,且可由并行构造来生成(例如,并行、并行的、开始和完成)。每一调度器实例22可被组织成带有执行上下文的逻辑上独立的任务(即,实现的任务)的同步集合(例如,栈和/或队列),以及依赖任务(即,未实现的任务)的工作窃取(workstealing)队列的列表,如以下图6的实施例所描述的。
在完成、阻塞或以其他方式中断(即,显式产生或迫使抢先)与在虚拟处理器32上运行的执行上下文34相关联的任务36之后,虚拟处理器32变成可为执行另一实现的任务40或未实现的任务42所用。调度器实例22搜索可运行执行上下文38或未实现的任务42来附加到可用虚拟处理器32以便按任何合适的方式执行。例如,调度器实例22可在搜索要执行的未实现的任务42之前首先搜索要执行的可运行执行上下文38。每一调度器实例22不断地将执行上下文38附加到可用虚拟处理器32以供执行,直到执行了调度器实例22的所有任务和执行上下文38。
调度器实例22可具有不同种类的执行上下文。在包括其中进程12A是Windows进程的Windows操作系统的计算机系统的实施例中,Windows进程中的不同的调度器实例22可包括线程执行上下文和纤程(fiber)执行上下文。因此,线程执行上下文和光纤执行上下文可存在于同一Windows进程中。
在执行任务之前,每一调度器实例22从运行时环境10或操作系统(例如,图7的OS 120)获得执行上下文34和38。可用虚拟处理器32定位并执行执行上下文34来开始执行任务。虚拟处理器32响应于与完成、阻塞、或以其他方式被中断的执行上下文34相关联的任务36而再次变为可用。当虚拟处理器32变为可用时,如果当前执行下文34所执行的先前任务36完成,则虚拟处理器32切换至可运行执行上下文38或者执行下一任务40或42作为对当前执行上下文34的继续。
在一个实施例中,调度器实例22独立于彼此而自主地操作并与下方的公共资源管理层14进行通信。在其他实施例中,调度器实例22与资源管理层14和彼此进行通信以便允许被调度在调度器实例22的一个实例上的工作与被调度在另一调度器实例22上的工作进行协调。
调度器实例22可各自具有相同或不同的策略37。当调度器实例22被调用时,运行时环境10和/或进程12A为调度器实例22指定策略37。每一调度器实例22的策略可指定以下的一个或多个:
1)要分配的处理资源的数量(例如,最小数目、所需数目和/或最大数目);
2)共享类型(例如,独占的或可共享的);
3)优先级类型(例如,高、中或低);
4)公平性类型(例如,增强高速缓存局部性或增强公平性);
5)行为类型(例如,欺诈零工(rogue chore)阈值、空闲阈值、分段阈值、和/或其他资源重新分配行为);
6)执行次序类型(例如,后进先出(LIFO)次序、先进先出(FIFO)次序、或为了服务质量或排序保证的默认次序);以及
7)拓扑结构类型(即,指定特定局部性特征的信息(例如,计算机系统中的一组相关处理资源)和/或指定特定资源特征的信息(例如,计算机系统中的具有所选芯片组能力的一组处理资源))。
除进程12A以外,运行时环境10中的其他共存进程(未示出)可包括在进程的执行过程中可增加或减少的零个或多个调度器实例22。
图2是示出用于在进程12A中创建多个调度器实例22的方法的一实施例的流程图。在一实施例中,图2的方法可由的计算机系统中的进程12A和/或运行时环境10显式地或隐式地执行。
在进程12A中创建至少第一和第二调度器实例22(1)和22(2),如框52中所指示的。调度器实例22(1)和22(2)各自包括可由计算机系统执行以使得在相应的处理资源子集上执行由运行时环境10和/或进程12A所指派的相应的一个或多个任务集的指令。处理资源集包括硬件线程16,且在一个实施例中,还包括资源管理层14所分配的虚拟处理器32。在资源管理层14将虚拟处理器32集分配到调度器实例22(1)和22(2)的情况下,虚拟处理器32集表示计算机系统的相应的处理器资源(即,硬件线程16)子集。因此,资源管理层14将每一虚拟处理器32集映射到相应的硬件线程16集。
调度器实例22(1)和22(2)可由运行时环境10和/或进程12A使用如上所述的运行时环境10的调度器功能来隐式地或显式地启动。调度器实例22(1)和22(2)也可在进程12A的执行期间的同一时刻(例如,在启动进程12A时)或不同时刻启动。另外,调度器实例22(1)和22(2)可具有相同或不同的策略37。
运行时环境10和/或进程12A将一组一个或多个任务分配到调度器实例22(1)以供执行并将一组一个或多个任务分配到调度器实例22(2)以供执行。运行时环境10和/或进程12A可基于如下参考图3更详细地描述的调度器实例22(1)和22(2)的各自的策略37或基于其他准则来指派任务集。
参考图2,调度器实例22(1)调度第一组任务以供执行,如框54中所指示的。当调度器实例22(1)的虚拟处理器32变为可用时,调度器实例22(1)将执行上下文34附加到该可用虚拟处理器32并将来自调度器实例22(1)中的任务集的任务与执行上下文34相关联以使得虚拟处理器32经由底层硬件线程16来执行该任务。调度器实例22(1)继续执行来自任务集的任务直到调度器实例22(1)中的所有任务都已被执行。
同样,调度器实例22(2)调度第二组任务以供执行,如框56中所指示的。当调度器实例22(2)的虚拟处理器32变为可用时,调度器实例22(2)将执行上下文34附加到该可用虚拟处理器32并将来自调度器实例22(2)中的任务集的任务与执行上下文34相关联以使得虚拟处理器32经由底层硬件线程16来执行该任务。调度器实例22(2)继续执行来自任务集的任务直到调度器实例22(2)中的所有任务都已被执行。
现在将根据一个实施例来描述使用图2的方法的示例。在该示例中,进程12A是执行音频和视频处理的应用程序且音频处理具有胜于视频处理的优先级。因此,进程12A调用具有高处理资源数的第一调度器实例22(1)来执行音频处理,而调用具有低处理资源数的第二调度器实例22(2)来执行视频处理。运行时环境10将与音频处理相关的任务集分配到进程12A所指定的调度器实例22(1)而将与视频处理相关的任务集分配到进程12A所指定的调度器实例22(2)。如果分配到进程12A的处理资源数量发生变化,则运行时环境10可在确保调度器实例22(1)具有足够用于较高优先级的音频处理的处理资源的同时调整分配到调度器实例22(1)和/或22(2)的处理资源数量。
图3是示出用于将一组一个或多个任务指派到进程12A中的调度器实例22的方法的一实施例的流程图。当运行时环境10和/或进程12A确定任务集要被分配到调度器实例22以供执行时,运行时环境10和/或进程12A如框62中所指示地标识所有调度器实例22的策略37并如框64中所指示地基于策略37将任务集指派到调度器实例22。
运行时环境10可向进程12A提供请求带有与进程12A所指定的一个或多个策略最密切地匹配的一个或多个策略37的调度器实例22的能力。运行时环境10搜索进程12A中的调度器实例22并基于可配置的预定义试探来选择调度器实例22。
回头参考上文中进程12A执行音频和视频处理的示例,运行时环境10可从调度器实例22(1)和22(2)的各自的策略37中确定调度器实例22(1)被配置成具有比调度器实例22(2)更多的处理资源。因此,运行时环境10可将较高优先级的音频处理任务指派到进程12A所指定的调度器示例22(1)而将较低优先级的视频处理任务指派到进程12A所指定的调度器示例22(2)。
如上参考图1-3所述的使用多个调度器实例22可有利地提供对进程12A中的工作的划分指定策略限制的方式。进程开发者可选择在进程中创建若干调度器实例22,每个调度器实例带有不同的策略37,并使得工作单元取决于该工作的本质而被压至合适的调度器实例22上。开发者可调节调度器实例22的策略37的参数以根据需要影响进程的吞吐量或响应性。
除了将任务集分配到调度器实例22之外,进程12A可获得对与分配到调度器实例22的处理资源分开的处理资源的访问。例如,运行时环境10可允许从资源管理层14向进程12A分配除了分配到调度器实例22的那些虚拟处理器之外的虚拟处理器32。运行时环境10和/或进程12A可使得在这些分开的处理资源上执行所选任务集以使得执行所选执行上下文34而无需使用调度器实例22。
如图4A-4B和5的实施例所示,运行时环境10还允许执行上下文34在现有调度器实例22(1)中动态地嵌套新的调度器实例22(2)。在现有调度器实例22(1)中的执行上下文34(2)上执行的任务36(2)可调用运行时环境10的调度器功能以便创建调度器实例的新的实例22(2)。图4A-4B是示出进程12B中并排存在的调度器实例22(1)和22(2)的实施例的框图,其中调度器实例22(1)的执行上下文34(2)在调度器实例22(1)中嵌套调度器实例22(2)。图5是示出用于在最初属于进程12B中的调度器22(1)的执行上下文34上创建嵌套调度器实例22(2)的方法的一实施例的流程图。
参考图4A和5,在进程12B中创建第一调度器实例22(1),如框72中所指示的。在图4A的示例中,调度器实例22(1)包括正在分别执行执行上下文34(1)和34(2)的一组虚拟处理器32(1)和32(2)。调度器实例22(1)还包括正等待被执行的执行上下文38池和策略37。每一执行上下文34(1)-34(2)和38包括标识调度器实例22(1)的数据44(1)。作为每一执行上下文34(1)-34(2)和38被分配到调度器实例22(1)的结果,数据44(1)与每一执行上下文34(1)-34(2)和38一起存储。在一个实施例中,数据44(1)可被存储在每一执行上下文34(1)-34(2)和38的本地存储里的栈中,并表示已经被压至栈上的第一条目。
在进程12B中的调度器实例22(1)中的执行上下文34(2)上执行的任务36(2)可导致创建第二调度器实例22(2),如框74中所指示的。调度器实例22(2)的策略37可与调度器实例22(1)的策略37不同,以允许调度器实例22(1)和22(2)执行具有不同性能特性的不同任务集。在图4A和4B的示例中,在执行上下文34(2)上执行的任务36(2)导致创建带有策略37的调度器实例22(2),并由此在执行上下文34(2)中动态地嵌套调度器实例22(2)。调度器实例22(2)中的虚拟处理器32(1)拾取执行上下文34(2)以供执行。在调度器实例22(1)中,先前被指派到执行上下文34(2)的虚拟处理器32(2)变成可用于执行调度器22(1)中的其他任务。因此,调度器实例22(1)中的虚拟处理器32(2)拾取执行上下文38(1)来执行任务40(1)。
作为执行上下文34(2)被移动到调度器实例22(2)的结果,标识调度器实例22(2)的数据44(2)与执行上下文34(2)一起存储。在一个实施例中,数据44(2)可被存储在执行上下文34(2)的本地存储里的栈中,并被压至包括数据44(1)的栈中的第一条目的顶部。栈的顶部条目指示每一执行上下文34的当前调度器实例22。
嵌套调度器实例22(2)可用诸如在图4B的示例中示出的虚拟处理器32(2)等附加虚拟处理器32来创建。
调度器实例22(1)和22(2)各自使用相应的虚拟处理器32集来调度相应的任务集来执行,如框76中所指示的。
调度器实例22(1)继续调度调度器实例22(1)的任务以便在调度器实例22(1)的虚拟处理器32(1)和32(2)上执行,而调度器实例22(2)调度执行上下文34(2)上的任务36(2)所生成的调度器实例22(1)的任务以便在调度器实例22(2)的虚拟处理器32(1)和32(1)上执行。
运行时环境10和/或进程12B可继续将执行上下文34和38所拾取以供执行的附加任务集指派到调度器实例22(1)。标识调度器实例22(1)的数据44(1)与被分配到调度器实例22(1)的任何附加执行上下文一起存储。
然而,运行时环境10和/或进程12B只允许将由执行上下文34(2)上的任务36(2)所生成的任务指派到嵌套调度器实例22(2)。在图4B的示例中,执行上下文34(3)上的任务36(3)正由虚拟处理器32(2)执行而执行上下文38池正在等待由调度器实例22(2)来执行。标识调度器实例22(2)的数据44(2)与执行上下文34(2)-34(3)和38一起存储在调度器实例22(2)中。
执行上下文34(2)最终可被返回至调度器实例22(1),如框78中所指示的。为此,从执行上下文34(2)中移除数据44(2)从而使得数据44(1)指示执行上下文34(2)属于调度器实例22(1)。在数据44(1)和44(2)作为栈来存储的情形中,从栈的顶部弹出数据44(2)而数据44(1)返回至栈的顶部。调度器实例22(1)中的虚拟处理器32拾取执行上下文34(2)以供执行。
使用图5的方法,可以在每一执行上下文34上堆叠或嵌套任意数量的调度器实例22,其中每一调度器实例22包括可与其他调度器实例22的策略37不同的所需策略37。每一执行上下文包括标识已指派的调度器实例22的数据44。每一次执行上下文移动至新的调度器实例22时,标识新的调度器实例22的新的数据44被添加(例如,至栈上)至执行上下文。
在其他实施例中,嵌套调度器实例22可与父调度器实例22更密切地集成以潜在可能地允许父调度器实例22和嵌套的调度器实例22之间的资源共享。
使用图5的方法,库开发者可有利地创建嵌套带有所选调度器策略或策略偏好的调度器实例22的库。这可允许库开发者确保库中的库功能用最合适这些功能的调度器策略来执行而不管上覆进程的调度器策略。例如,执行上下文34(2)上的任务36(2)可表示图4A-4B的示例中的进程12B所调用的库功能。通过使用调度器实例22(2),执行上下文34(2)可比在由调度器实例22(1)执行的情况下更高效地执行。
在一个实施例中,进程12A和12B将任务组织成一个或多个调度组90并将调度组90呈现给调度器实例22。图6是示出供在调度器实例22中使用的调度组90的一实施例的框图。
调度组90包括可运行集合92、实现的任务集合93、工作集合94、和一组零个或多个工作窃取队列96。可运行集合92包含解除阻塞执行上下文38的列表。当执行上下文变为解除阻塞时,调度器实例22将执行上下文38添加至可运行集合92。实现的任务集合93包含可能具有或可能不具有相关联的执行上下文38的实现的任务40的列表(例如,未启动的代理)。当进程12将新的可运行任务呈现给调度器实例22时,调度器实例22将实现的任务添加至实现的任务集合93。工作集合94包含如由箭头98所指示的工作窃取队列96的列表,并跟踪正在执行来自工作窃取队列96的任务的执行上下文。每一工作窃取队列96包括一个或多个未实现的任务42。
使用图6的实施例,调度器实例22可首先在调度器实例22中的每一调度组90的可运行集合92中搜索解除阻塞的执行上下文38。调度器实例22然后可在调度器实例22的调度组90的工作窃取队列96中搜索未实现的任务之前在所有调度组90的实现的任务集合93中搜索实现的任务。
在一个实施例中,变为可用的虚拟处理器32可尝试在该虚拟处理器32最近从中获得可运行执行上下文38的调度组90(即,当前调度组90)的可运行集合92中定位可运行执行上下文38或者在该调度组90的实现的任务集合93中定位实现的任务40。可用虚拟处理器32然后可尝试以循环或其他合适的次序在调度器实例22的其余调度组90中的可运行集合92中定位可运行执行上下文38或者在其余调度组90的实现的任务集合93中定位实现的任务40。如果没有找到可运行执行上下文38,则可用虚拟处理器32然后可尝试在以循环或其他合适的次序搜索调度器实例22的其余调度组90中的工作窃取队列96之前在当前调度组90的工作窃取队列96中定位未实现的任务42。
图7是示出被配置成实现带有进程12A或12B中的多个调度器实例22的运行时环境10的计算机系统100的一实施例的框图。计算机系统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)120、运行时平台122、应用程序124和资源管理层14(也在图1中示出)。每一硬件线程16可结合或响应于从输入/输出设备106、显示设备108、外围设备110、和/或网络设备112接收到的信息来执行指令。
计算机系统100引导并执行OS 120。OS 120包括可由硬件线程16执行来管理计算机系统100的组件并提供允许应用程序124访问并使用该组件的一组功能的指令。在一实施例中,OS 120是Windows操作系统。在其他实施例中,OS 120是适于和计算机系统100一起使用的另一操作系统。
资源管理层14包括可结合OS 120来执行以如上参考图1所述地分配包括硬件线程16的计算机系统100的资源的指令。资源管理层14可作为可为一个或多个应用程序124所用的功能库或者作为OS 120的一个集成部分被包括在计算机系统100中。
运行时平台122包括可结合OS 120和资源管理层14来执行以生成运行时环境10并向应用程序124提供运行时功能的指令。这些运行时功能包括如上参考图1所详细描述的调度器功能。运行时功能可作为应用程序124的一部分、作为对一个或多个应用程序124可用的功能库、或者作为OS 120和/或资源管理层14的一个集成部分被包括在计算机系统100中。
每一应用程序124包括可结合OS 120、资源管理层14和/或运行时平台122来执行以使计算机系统100执行所需操作的指令。每一应用程序124表示可与由OS 120提供的多个调度器实例22、资源管理层14和/或运行时平台122一起执行的一个或多个进程,诸如上述的进程12A和12B。
存储器系统104包括被配置成存储指令和数据的任何合适的类型、数量和配置的易失性或非易失性存储设备。存储器系统104的存储设备表示存储包括OS 120、资源管理层14、运行时平台122和应用程序124的计算机可执行指令的计算机可读存储介质。这些指令可由计算机系统来执行以执行此处描述的OS 120、资源管理层14、运行时平台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将信息发送给网络或者从网络接收信息。
尽管此处说明并描述了具体实施例,但本领域技术人员可以理解,可用各种替换和/或等价实现来替换此处示出并描述的具体实施例而不背离本发明的范围。本申请旨在覆盖此处讨论的具体实施例的任何改编或变型。因此,本发明旨在仅由权利要求书及其等效方案来限制。

Claims (15)

1.一种存储计算机可执行指令的计算机可读存储介质(104),所述计算机可执行指令在由计算机系统(100)执行时执行一种方法,所述方法包括:
用所述计算机系统可执行的指令来创建第一调度器实例(22)以使得所述计算机系统执行进程(12)的第一组任务(36/40/42);以及
用所述计算机系统可执行的指令来创建第二调度器实例(22)以使得所述计算机系统执行所述进程的第二组任务(36/40/42)。
2.如权利要求1所述的计算机可读存储介质,其特征在于,所述方法还包括:
将第一组虚拟处理器(32)分配到所述第一调度器实例来表示所述计算机系统的处理器资源的第一子集;以及
将第二组虚拟处理器(32)分配到所述第二调度器实例来表示所述计算机系统的处理器资源的第二子集。
3.如权利要求2所述的计算机可读存储介质,其特征在于,所述方法还包括:
将所述第一组虚拟处理器映射到第一组硬件线程(16)以使得所述第一组硬件线程执行所述第一组任务;以及
将所述第二组虚拟处理器映射到第二组硬件线程(16)以使得所述第二组硬件线程执行所述第二组任务。
4.如权利要求1所述的计算机可读存储介质,其特征在于,创建所述第二调度器实例包括:
将执行所述第一组任务中的一个的执行上下文(34)从所述第一调度器实例移动至所述第二调度器实例;以及
将所述第一组任务中的一个作为所述第二组任务中的一个来执行。
5.如权利要求4所述的计算机可读存储介质,其特征在于,创建所述第二调度器实例还包括:
在将所述第一组任务中的一个作为所述第二组任务中的一个来执行之前,将标识所述第一调度器实例的数据(44)与所述执行上下文一起存储。
6.一种方法,包括:
启动进程(12)中的第一和第二调度器实例(22),所述第一和第二调度器实例能够分别访问来自一组处理资源的处理资源的第一子集和第二子集以及来自所述进程的第一组任务和第二组任务(36/40/42);
用所述第一调度器实例调度所述第一组任务中的第一个以便由所述处理资源的第一子集中的一个来执行;以及
用所述第二调度器实例调度所述第二组任务中的一个以便由所述处理资源的第二子集中的一个来执行。
7.如权利要求6所述的方法,其特征在于,还包括:
通过将所述第一组任务中的一个与被分配到所述第一调度器实例的第一组虚拟处理器(32)中的一个上的第一执行上下文(34)进行关联来调度所述第一组任务中的第一个以便由所述处理资源的第一子集中的一个来执行;以及
通过将所述第二组任务中的一个与被分配到所述第二调度器实例的第二组虚拟处理器(32)中的一个上的第一执行上下文(34)进行关联来调度所述第二组任务中的一个以便由所述处理资源的第二子集中的一个来执行;
其中所述处理资源的第一和第二子集分别包括所述第一和第二组虚拟处理器。
8.如权利要求7所述的方法,其特征在于,还包括:
将所述第一组虚拟处理器中的一个映射到第一硬件线程(16)以便执行所述第一组任务中的第一个;以及
将所述第二组虚拟处理器中的一个映射到第二硬件线程(16)以便执行所述第二组任务中的一个;
其中所述处理资源集包括所述第一和第二硬件线程。
9.如权利要求6所述的方法,其特征在于,还包括:
响应于在所述第一调度器实例中的处理资源的第一子集中的一个上执行第一执行上下文(34)上的第一组任务中的一个,启动所述第二调度器实例;以及
启动所述第二调度器实例来包括所述第一执行上下文。
10.如权利要求9所述的方法,其特征在于,还包括:
将标识所述第一调度器实例的第一数据(44)与所述第一执行上下文一起存储。
11.如权利要求10所述的方法,其特征在于,还包括:
将标识所述第一调度器实例的第二数据(44)与第二执行上下文(34)一起存储在所述第一调度器实例中;以及
将标识所述第二调度器实例的第三数据(44)与所述第一执行上下文一起存储。
12.如权利要求11所述的方法,其特征在于,还包括:
将所述第一数据和所述第三数据作为栈来存储。
13.如权利要求9所述的方法,其特征在于,还包括:
将所述第二调度器实例中的所述第一执行上下文返回至所述第一调度器实例。
14.如权利要求9所述的方法,其特征在于,还包括:
在启动所述第二调度器实例之后调度所述第一组任务中的第二个以便由所述处理资源的第一子集中的一个来执行。
15.如权利要求6所述的方法,其特征在于,所述进程是应用程序、库函数或操作系统服务中的一个。
CN2009801212404A 2008-06-02 2009-05-01 进程中的调度器实例 Active CN102047218B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/131,135 2008-06-02
US12/131,135 US8650570B2 (en) 2008-06-02 2008-06-02 Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources
PCT/US2009/042609 WO2009148738A2 (en) 2008-06-02 2009-05-01 Scheduler instances in a process

Publications (2)

Publication Number Publication Date
CN102047218A true CN102047218A (zh) 2011-05-04
CN102047218B CN102047218B (zh) 2013-09-11

Family

ID=41381482

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801212404A Active CN102047218B (zh) 2008-06-02 2009-05-01 进程中的调度器实例

Country Status (9)

Country Link
US (1) US8650570B2 (zh)
EP (1) EP2300910B1 (zh)
JP (1) JP5597196B2 (zh)
KR (1) KR101555529B1 (zh)
CN (1) CN102047218B (zh)
BR (1) BRPI0910531A2 (zh)
CA (1) CA2722670C (zh)
RU (1) RU2530345C2 (zh)
WO (1) WO2009148738A2 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102685228A (zh) * 2012-05-10 2012-09-19 苏州阔地网络科技有限公司 一种云会议的消息处理方法及系统
CN103136047A (zh) * 2011-11-30 2013-06-05 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
CN103778016A (zh) * 2012-10-17 2014-05-07 瑞萨电子株式会社 多线程处理器
CN106250218A (zh) * 2015-06-11 2016-12-21 霍尼韦尔国际公司 用于使用滑动时间窗口调度任务的系统和方法
CN106502787A (zh) * 2016-09-30 2017-03-15 华为技术有限公司 一种调度方法及装置
CN107451469A (zh) * 2017-09-14 2017-12-08 郑州云海信息技术有限公司 一种进程管理系统及方法
CN107741878A (zh) * 2016-11-01 2018-02-27 研祥智能科技股份有限公司 任务调度方法、装置及系统
CN109426556A (zh) * 2017-08-31 2019-03-05 大唐移动通信设备有限公司 一种进程调度方法和装置
CN109983440A (zh) * 2016-11-28 2019-07-05 Arm有限公司 数据处理
US10768955B1 (en) 2015-03-20 2020-09-08 Amazon Technologies, Inc. Executing commands within virtual machine instances

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
US8392920B2 (en) * 2010-01-27 2013-03-05 Microsoft Corporation Parallel query engine with dynamic number of workers
KR101658035B1 (ko) * 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
KR101859188B1 (ko) * 2011-09-26 2018-06-29 삼성전자주식회사 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법
US20130132962A1 (en) * 2011-11-22 2013-05-23 Microsoft Corporation Scheduler combinators
ES2439803B1 (es) * 2012-04-19 2014-10-29 Universitat Politècnica De Catalunya Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático
CN102693156A (zh) * 2012-05-07 2012-09-26 清华大学 一种基于可配置策略的进程调度方法
US10108445B2 (en) * 2014-09-22 2018-10-23 The Boeing Company Parallelization in virtual machine operation
CN110968401A (zh) * 2018-09-28 2020-04-07 北京国双科技有限公司 基于Quartz的任务调度方法及装置
US11138213B2 (en) * 2019-04-10 2021-10-05 Snowflake Inc. Internal resource provisioning in database systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060005188A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US20060095908A1 (en) * 2004-11-01 2006-05-04 Norton Scott J Per processor set scheduling
US20060155973A1 (en) * 2005-01-13 2006-07-13 Soltis Donald C Jr Multithreaded hardware systems and methods
US20070074217A1 (en) * 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5394547A (en) * 1991-12-24 1995-02-28 International Business Machines Corporation Data processing system and method having selectable scheduler
JP2836468B2 (ja) * 1993-12-28 1998-12-14 日本電気株式会社 並列ジョブの協調スケジューリング方式
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
AU735024B2 (en) * 1997-07-25 2001-06-28 British Telecommunications Public Limited Company Scheduler for a software system
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6839748B1 (en) * 2000-04-21 2005-01-04 Sun Microsystems, Inc. Synchronous task scheduler for corba gateway
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US20020073129A1 (en) * 2000-12-04 2002-06-13 Yu-Chung Wang Integrated multi-component scheduler for operating systems
US6901405B1 (en) * 2000-12-20 2005-05-31 Microsoft Corporation Method for persisting a schedule and database schema
GB0212176D0 (en) * 2002-05-27 2002-07-03 Radioscape Ltd Stochasitc scheduling in CVM
US8165148B2 (en) * 2003-01-13 2012-04-24 Qualcomm Incorporated System and method for rate assignment
US7251815B2 (en) * 2003-04-29 2007-07-31 International Business Machines Corporation Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle
US20050076339A1 (en) * 2003-10-03 2005-04-07 Nortel Networks Limited Method and apparatus for automated negotiation for resources on a switched underlay network
US7457886B1 (en) * 2004-02-03 2008-11-25 Apple Inc. System and method for input/output scheduling
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
FR2882169B1 (fr) 2005-02-14 2007-05-25 Cofluent Design Sarl Procede de simulation d'un systeme complexe incluant une hierarchie d'ordonnanceurs, produit programme d'ordinateur et moyen de stockage correspondants
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
US7802256B2 (en) * 2005-06-27 2010-09-21 Microsoft Corporation Class scheduler for increasing the probability of processor access by time-sensitive processes
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
US8656403B2 (en) * 2008-04-30 2014-02-18 International Business Machines Corporation Negotiation management in data processing systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060005188A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US20060095908A1 (en) * 2004-11-01 2006-05-04 Norton Scott J Per processor set scheduling
US20060155973A1 (en) * 2005-01-13 2006-07-13 Soltis Donald C Jr Multithreaded hardware systems and methods
US20070074217A1 (en) * 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136047A (zh) * 2011-11-30 2013-06-05 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
CN103136047B (zh) * 2011-11-30 2016-08-17 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
CN102685228A (zh) * 2012-05-10 2012-09-19 苏州阔地网络科技有限公司 一种云会议的消息处理方法及系统
CN103778016A (zh) * 2012-10-17 2014-05-07 瑞萨电子株式会社 多线程处理器
CN103778016B (zh) * 2012-10-17 2018-10-02 瑞萨电子株式会社 多线程处理器
US10768955B1 (en) 2015-03-20 2020-09-08 Amazon Technologies, Inc. Executing commands within virtual machine instances
CN106250218A (zh) * 2015-06-11 2016-12-21 霍尼韦尔国际公司 用于使用滑动时间窗口调度任务的系统和方法
CN106502787B (zh) * 2016-09-30 2019-11-26 华为技术有限公司 一种调度方法及装置
CN106502787A (zh) * 2016-09-30 2017-03-15 华为技术有限公司 一种调度方法及装置
CN107741878A (zh) * 2016-11-01 2018-02-27 研祥智能科技股份有限公司 任务调度方法、装置及系统
CN109983440A (zh) * 2016-11-28 2019-07-05 Arm有限公司 数据处理
CN109426556A (zh) * 2017-08-31 2019-03-05 大唐移动通信设备有限公司 一种进程调度方法和装置
CN109426556B (zh) * 2017-08-31 2021-06-04 大唐移动通信设备有限公司 一种进程调度方法和装置
CN107451469A (zh) * 2017-09-14 2017-12-08 郑州云海信息技术有限公司 一种进程管理系统及方法

Also Published As

Publication number Publication date
WO2009148738A2 (en) 2009-12-10
CA2722670A1 (en) 2009-12-10
CA2722670C (en) 2016-07-05
US20090300637A1 (en) 2009-12-03
KR101555529B1 (ko) 2015-10-06
RU2530345C2 (ru) 2014-10-10
BRPI0910531A2 (pt) 2015-09-29
JP5597196B2 (ja) 2014-10-01
WO2009148738A3 (en) 2010-02-18
KR20110025745A (ko) 2011-03-11
JP2011523142A (ja) 2011-08-04
EP2300910A4 (en) 2012-10-10
EP2300910A2 (en) 2011-03-30
US8650570B2 (en) 2014-02-11
RU2010149255A (ru) 2012-06-10
CN102047218B (zh) 2013-09-11
EP2300910B1 (en) 2018-11-21

Similar Documents

Publication Publication Date Title
CN102047218B (zh) 进程中的调度器实例
CN102027447B (zh) 调度器中的局部任务集合
CN102027452B (zh) 调度器中的调度集合
US6948172B1 (en) Preemptive multi-tasking with cooperative groups of tasks
US7975269B2 (en) Parallel processor methods and apparatus
CN102402419A (zh) 用所选执行运行时执行的用户代码的运行时不可知表示
CN101051280A (zh) 智能卡嵌入式操作系统及其控制方法
KR102338849B1 (ko) 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템
US8291426B2 (en) Memory allocators corresponding to processor resources
US9367350B2 (en) Meta-scheduler with meta-contexts
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
CN102047217A (zh) 重新获取对执行外部执行上下文的处理资源的控制
CN115509704A (zh) 一种任务调度方法、装置、设备及存储介质
US8806180B2 (en) Task execution and context switching in a scheduler
CN113495787A (zh) 资源分配方法、装置、存储介质及电子设备
US9304831B2 (en) Scheduling execution contexts with critical regions

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150506

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150506

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160802

Address after: Grand Cayman, Georgetown, Cayman Islands

Patentee after: IValley Holding Co., Ltd.

Address before: Washington State

Patentee before: Micro soft technique license Co., Ltd