Efficient resumption of co-routines on a linear stack
    1.
    发明授权
    Efficient resumption of co-routines on a linear stack 有权
    在线性堆栈上有效恢复协同程序

    公开(公告)号:US09003377B2

    公开(公告)日:2015-04-07

    申请号:US12683447

    申请日:2010-01-07

    IPC分类号: G06F9/44

    摘要: Unsuspended co-routines are handled by the machine call stack mechanism in which the stack grows and shrinks as recursive calls are made and returned from. When a co-routine is suspended, however, additional call stack processing is performed. A suspension message is issued, and the entire resume-able part of the call stack is removed, and is copied to the heap. A frame that returns control to a driver method (a resumer) is copied to the call stack so that resumption of the co-routine does not recursively reactivate the whole call stack. Instead the resumer reactivates only the topmost or most current frame called the leaf frame. When a co-routine is suspended, it does not return to its caller, but instead returns to the resumer that has reactivated it.

    摘要翻译: 未挂起的共同例程由机器调用堆栈机制处理,其中堆栈随着递归调用并从中返回而增长和收缩。 然而,当暂停协同程序时,执行额外的呼叫栈处理。 发出暂停消息,并且删除调用堆栈的整个可恢复部分,并将其复制到堆中。 将控制权返回到驱动程序方法(resumer)的一个框架将被复制到调用堆栈,以便恢复协同程序不会递归地重新激活整个调用堆栈。 相反,resumer仅重新激活称为叶子框架的最前面或最近的帧。 当一个共同程序被暂停时,它不会返回到其调用者,而是返回已重新激活它的resumer。

    EFFICIENT RESUMPTION OF CO-ROUTINES ON A LINEAR STACK
    2.
    发明申请
    EFFICIENT RESUMPTION OF CO-ROUTINES ON A LINEAR STACK 有权
    在线性堆栈上的有效恢复

    公开(公告)号:US20110167248A1

    公开(公告)日:2011-07-07

    申请号:US12683447

    申请日:2010-01-07

    IPC分类号: G06F9/40 G06F9/44

    摘要: Unsuspended co-routines are handled by the machine call stack mechanism in which the stack grows and shrinks as recursive calls are made and returned from. When a co-routine is suspended, however, additional call stack processing is performed. A suspension message is issued, and the entire resume-able part of the call stack is removed, and is copied to the heap. A frame that returns control to a driver method (a resumer) is copied to the call stack so that resumption of the co-routine does not recursively reactivate the whole call stack. Instead the resumer reactivates only the topmost or most current frame called the leaf frame. When a co-routine is suspended, it does not return to its caller, but instead returns to the resumer that has reactivated it.

    摘要翻译: 未挂起的共同例程由机器调用堆栈机制处理,其中堆栈随着递归调用并从中返回而增长和收缩。 然而,当暂停协同程序时,执行额外的呼叫栈处理。 发出暂停消息,并且删除调用堆栈的整个可恢复部分,并将其复制到堆中。 将控制权返回到驱动程序方法(resumer)的一个框架将被复制到调用堆栈,以便恢复协同程序不会递归地重新激活整个调用堆栈。 相反,resumer仅重新激活称为叶子框架的最前面或最近的帧。 当一个共同程序被暂停时,它不会返回到其调用者,而是返回已重新激活它的resumer。

    Resumable methods
    3.
    发明授权
    Resumable methods 有权
    可读方法

    公开(公告)号:US08549506B2

    公开(公告)日:2013-10-01

    申请号:US12767811

    申请日:2010-04-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/314

    摘要: APIs are provided, that are external to a programming language but that provide functionality that can be plugged into a language compiler. The provided APIs tailor functionality associated with asynchronous programming, iterators or writing symmetric co-routines using a generalized pattern-based approach. Several types of resumable methods are provided in the APIs which can be applied to method bodies written in traditional program code. Syntactically distinguishable control points in method bodies written in traditional program code invoke transformation of the code by the compiler using the external APIs. The transformed code enables the pausing and resumption of the code sandwiched between control points in the transformed code. The source code contained within a method having control points in it is transformed so that code within the method can be executed in discrete parts, each part starting and ending at a control point in the transformed code.

    摘要翻译: 提供API,它们是编程语言外部的,但是提供可以插入到语言编译器中的功能。 提供的API定制与异步编程相关的功能,迭代器或使用广义的基于模式的方法来编写对称协同程序。 API中提供了几种类型的可恢复方法,可以将其应用于以传统程序代码编写的方法体。 以传统程序代码编写的方法体中的语法上可区分的控制点通过外部API调用编译器对代码的转换。 转换的代码使得能够暂停和恢复被转换代码中的控制点之间的代码。 包含在具有其中的控制点的方法中的源代码被变换,使得该方法中的代码可以以离散部分执行,每个部分开始并在变换代码的控制点结束。

    RESUMABLE METHODS
    4.
    发明申请
    RESUMABLE METHODS 有权
    可恢复的方法

    公开(公告)号:US20110265070A1

    公开(公告)日:2011-10-27

    申请号:US12767811

    申请日:2010-04-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/314

    摘要: APIs are provided, that are external to a programming language but that provide functionality that can be plugged into a language compiler. The provided APIs tailor functionality associated with asynchronous programming, iterators or writing symmetric co-routines using a generalized pattern-based approach. Several types of resumable methods are provided in the APIs which can be applied to method bodies written in traditional program code. Syntactically distinguishable control points in method bodies written in traditional program code invoke transformation of the code by the compiler using the external APIs. The transformed code enables the pausing and resumption of the code sandwiched between control points in the transformed code. The source code contained within a method having control points in it is transformed so that code within the method can be executed in discrete parts, each part starting and ending at a control point in the transformed code.

    摘要翻译: 提供API,它们是编程语言外部的,但是提供可以插入到语言编译器中的功能。 提供的API定制与异步编程相关的功能,迭代器或使用广义的基于模式的方法来编写对称协同程序。 API中提供了几种类型的可恢复方法,可以将其应用于以传统程序代码编写的方法体。 以传统程序代码编写的方法体中的语法上可区分的控制点通过外部API调用编译器对代码的转换。 转换的代码使得能够暂停和恢复被转换代码中的控制点之间的代码。 包含在其中具有控制点的方法中的源代码被变换,使得该方法中的代码可以以离散部分执行,每个部分开始并在变换代码的控制点结束。

    Pattern-based compilation of asynchronous consumption
    5.
    发明授权
    Pattern-based compilation of asynchronous consumption 有权
    基于模式的异步消耗编译

    公开(公告)号:US08918767B2

    公开(公告)日:2014-12-23

    申请号:US13162288

    申请日:2011-06-16

    IPC分类号: G06F9/45 G06F9/44

    CPC分类号: G06F8/456

    摘要: The present invention extends to methods, systems, and computer program products for transforming source code to await execution of asynchronous operations. Embodiments of the invention simplify authoring and use of asynchronous methods, by generating statements that use well-defined awaitable objects to await completion of asynchronous operations. For example, a computer system can transform a statement that requests to await the completion of an asynchronous operation into a plurality of statements that use a predefined pattern of members of an awaitable object corresponding the asynchronous operation. The pattern can include one or more members configured to return a completion status of the asynchronous operation, one or more members configured to resume execution of the asynchronous method at a resumption point when the asynchronous operation completes, and one or more members configured to retrieve completion results. Accordingly, the plurality of statements can use these members to await execution of the asynchronous operation.

    摘要翻译: 本发明扩展到用于转换源代码以等待执行异步操作的方法,系统和计算机程序产品。 本发明的实施例简化了异步方法的编写和使用,通过生成使用明确定义的等待对象等待完成异步操作的语句。 例如,计算机系统可以将请求等待完成异步操作的语句转换为使用对应于异步操作的可等待对象的成员的预定义模式的多个语句。 该模式可以包括被配置为返回异步操作的完成状态的一个或多个成员,被配置成在异步操作完成时在恢复点恢复异步方法的执行的一个或多个成员以及被配置为检索完成的一个或多个成员 结果。 因此,多个语句可以使用这些成员来等待异步操作的执行。

    PATTERN-BASED COMPILATION OF ASYNCHRONOUS CONSUMPTION
    6.
    发明申请
    PATTERN-BASED COMPILATION OF ASYNCHRONOUS CONSUMPTION 有权
    基于模式的异步消费的编译

    公开(公告)号:US20120324431A1

    公开(公告)日:2012-12-20

    申请号:US13162288

    申请日:2011-06-16

    IPC分类号: G06F9/45

    CPC分类号: G06F8/456

    摘要: The present invention extends to methods, systems, and computer program products for transforming source code to await execution of asynchronous operations. Embodiments of the invention simplify authoring and use of asynchronous methods, by generating statements that use well-defined awaitable objects to await completion of asynchronous operations. For example, a computer system can transform a statement that requests to await the completion of an asynchronous operation into a plurality of statements that use a predefined pattern of members of an awaitable object corresponding the asynchronous operation. The pattern can include one or more members configured to return a completion status of the asynchronous operation, one or more members configured to resume execution of the asynchronous method at a resumption point when the asynchronous operation completes, and one or more members configured to retrieve completion results. Accordingly, the plurality of statements can use these members to await execution of the asynchronous operation.

    摘要翻译: 本发明扩展到用于转换源代码以等待执行异步操作的方法,系统和计算机程序产品。 本发明的实施例简化了异步方法的编写和使用,通过生成使用明确定义的等待对象等待完成异步操作的语句。 例如,计算机系统可以将请求等待完成异步操作的语句转换为使用对应于异步操作的可等待对象的成员的预定义模式的多个语句。 该模式可以包括被配置为返回异步操作的完成状态的一个或多个成员,被配置成在异步操作完成时在恢复点恢复异步方法的执行的一个或多个成员以及被配置为检索完成的一个或多个成员 结果。 因此,多个语句可以使用这些成员来等待异步操作的执行。

    Scheduling collections in a scheduler
    7.
    发明授权
    Scheduling collections in a scheduler 有权
    在调度程序中调度集合

    公开(公告)号:US08561072B2

    公开(公告)日:2013-10-15

    申请号:US12121794

    申请日:2008-05-16

    IPC分类号: G06F9/46 G06F9/06 G06F13/00

    CPC分类号: G06F9/4881 G06F2209/483

    摘要: A scheduler in a process of a computer system includes a respective scheduling collection for each scheduling node in the scheduler. The scheduling collections are mapped into at least a partial search order based on one or more execution metrics. When a processing resource in a scheduling node becomes available, the processing resource first attempts to locate a task to execute in a scheduling collection corresponding to the scheduling node before searching other scheduling collections in an order specified by the search order.

    摘要翻译: 计算机系统的过程中的调度器包括调度器中每个调度节点的相应调度收集。 基于一个或多个执行度量将调度集合映射到至少部分搜索顺序。 当调度节点中的处理资源变得可用时,处理资源首先尝试在按照搜索顺序指定的顺序搜索其他调度集合之前,在与调度节点相对应的调度集合中定位要执行的任务。

    Dataflow component scheduling using reader/writer semantics
    8.
    发明授权
    Dataflow component scheduling using reader/writer semantics 有权
    数据流组件调度使用读/写器语义

    公开(公告)号:US08316369B2

    公开(公告)日:2012-11-20

    申请号:US12649254

    申请日:2009-12-29

    IPC分类号: G06F9/46

    CPC分类号: G06F9/52

    摘要: The scheduling of dataflow components in a dataflow network. A number, if not all, of the dataflow components are created using a domain/agent model. A scheduler identifies, for a number of the components, a creation source for the given component. The scheduler also identifies an appropriate domain-level access permission (and potentially also an appropriate agent-level access permission) for the given component based on the creation source of the given component. Tokens may be used at the domain or agent level to control access.

    摘要翻译: 数据流网络中数据流组件的调度。 使用域/代理模型创建数字(如果不是全部)数据流组件。 调度程序为多个组件识别给定组件的创建源。 调度程序还根据给定组件的创建源,为给定组件标识适当的域级访问权限(并且可能还需要适当的代理级访问权限)。 可以在域或代理级别使用令牌来控制访问。

    COMPILER-ENFORCED AGENT ACCESS RESTRICTION
    9.
    发明申请
    COMPILER-ENFORCED AGENT ACCESS RESTRICTION 有权
    编译器执行代理访问限制

    公开(公告)号:US20110161610A1

    公开(公告)日:2011-06-30

    申请号:US12649252

    申请日:2009-12-29

    IPC分类号: G06F21/00 G06F12/02

    CPC分类号: G06F9/526 G06F8/41

    摘要: A compiler that enforces, at compile time, domain data access permissions and/or agent data access permissions on at least one agent to be created within a domain. The compiler identifies domain data of a domain to be created, and an agent to be created within the domain at runtime. The domain access permissions of the agent are also identified. As part of compilation of an expression of an agent, a reference to the domain data is identified. Then, the compiler evaluates an operation that the reference to the domain data would impose on the domain data upon evaluating the expression at runtime. The compiler then determines whether or not the operation is in violation of the domain access permissions of the agent with respect to the identified domain data. Agent data access may also be evaluated depending on whether the access occurs by a function or a method.

    摘要翻译: 在编译时强制在域中创建的至少一个代理的域数据访问权限和/或代理数据访问权限的编译器。 编译器识别要创建的域的域数据,以及在运行时在域内创建的代理。 还会识别代理的域访问权限。 作为汇编代理人表达的一部分,对域数据的引用进行了识别。 然后,编译器在运行时评估表达式时,评估对域数据对域数据的引用的操作。 然后,编译器确定该操作是否违反代理相对于所识别的域数据的域访问权限。 代理数据访问也可以根据访问是由功能还是方法进行评估。

    LANGUAGE-BASED MODEL FOR ISOLATING SHARED STATE
    10.
    发明申请
    LANGUAGE-BASED MODEL FOR ISOLATING SHARED STATE 有权
    用于分离共享状态的基于语言的模型

    公开(公告)号:US20100318975A1

    公开(公告)日:2010-12-16

    申请号:US12482270

    申请日:2009-06-10

    IPC分类号: G06F9/45

    摘要: A method and/or computer program that incorporates isolation principles of separate address spaces and enforces the principles with a compiler and supporting runtime through a language-based model is disclosed. This approach significantly lowers the required overhead and retains the beneficial qualities of the scalable, isolated model. The model is implemented in a programming language where memory-based state is partitioned into a plurality of domains where the variables inside of a domain are isolated from external components. Agents are introduced inside of the domain and act on behalf of clients outside of the domain. The agents communicate with their clients via message-passing to enforce the isolation of the domain state. The domain-based isolation addresses the partitioning of memory-based state without the introduction of separate processes. Domains can also be used in conjunction with a distributed model either within a single computing device or between computing devices.

    摘要翻译: 公开了一种包含单独地址空间的隔离原理的方法和/或计算机程序,并且通过基于语言的模型来实现与编译器的原理并支持运行时。 这种方法显着降低了所需的开销,并保留了可扩展的隔离模型的有益质量。 该模型以编程语言实现,其中基于存储器的状态被分割成多个域,其中域内的变量与外部组件隔离。 代理被引入域内部,并代表域外的客户端进行操作。 代理商通过消息传递与客户端进行通信,以强制实现域状态的隔离。 基于域的隔离解决了基于内存的状态的划分,而不引入单独的进程。 域也可以在单个计算设备内部或计算设备之间与分布式模型结合使用。