Patents by Inventor Niklas Gustafsson

Niklas Gustafsson has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 8918767
    Abstract: 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.
    Type: Grant
    Filed: June 16, 2011
    Date of Patent: December 23, 2014
    Assignee: Microsoft Corporation
    Inventors: Stephen Harris Toub, Mads Torgersen, Lucian Jules Wischik, Anders Hejlsberg, Niklas Gustafsson, Dmitry Lomov, Matthew J. Warren
  • Patent number: 8887162
    Abstract: Local storage may be allocated for each processing resource in a process of a computer system. Each processing resource may be virtualized and may have a one-to-one or a many-to-one correspondence with with physical processors. The contents of each local storage persist across various execution contexts that are executed by a corresponding processing resource. Each local storage may be accessed without synchronization (e.g., locks) by each execution context that is executed on a corresponding processing resource. The local storages provide the ability to segment data and store and access the data without synchronization. The local storages may be used to implement lock-free techniques such as a generalized reduction where a set of values is combined through an associative operator.
    Type: Grant
    Filed: December 17, 2008
    Date of Patent: November 11, 2014
    Assignee: Microsoft Corporation
    Inventors: Paul F. Ringseth, Rick Molloy, Niklas Gustafsson, David Callahan
  • Patent number: 8856792
    Abstract: One embodiment includes a method of performing dataflow processing. The method includes representing a first asynchronous processing node as a first future. The first future represents the lifecycle of processing of the first asynchronous processing node. The method further includes representing one or more other asynchronous operations as one or more other futures. The one or more other futures represent the asynchronous completion of one or more operations'processing. The first future and the one or more other futures are represented as a single composite future. The single composite future represents completion of processing of the combination of the first asynchronous processing node and the one or more other asynchronous operations.
    Type: Grant
    Filed: December 17, 2010
    Date of Patent: October 7, 2014
    Assignee: Microsoft Corporation
    Inventors: Zlatko V. Michailov, Niklas Gustafsson, Daniela Cristina Manu, Stephen H. Toub
  • Patent number: 8843927
    Abstract: Each processing resource in a scheduler of a process executing on a computer system maintains counts of the number of tasks that arrive at the processing resource and the number of tasks that complete on the processing resource. The counts are maintained in storage that is only writeable by the corresponding processing resource. The scheduler collects and sums the counts from each processing resource and provides statistics based on the summed counts and previous summed counts to a resource manager in response to a request from the resource manager. The scheduler does not reset the counts when the counts are collected and stores copies of the summed counts for use with the next request from the resource manager. The counts may be maintained without synchronization and with thread safety to minimize the impact of gathering statistics on the application.
    Type: Grant
    Filed: April 23, 2009
    Date of Patent: September 23, 2014
    Assignee: Microsoft Corporation
    Inventors: Marko Radmilac, Paul Ringseth, Genevieve Fernandes, William R. Messmer, Niklas Gustafsson
  • Patent number: 8695003
    Abstract: Multiple types of executable agents operating within a domain. The domain includes mutable shared state and immutable shared state, with agents internal to the domain only operating on the shared state. Writer agents are defined to be agents that have read access and write access to mutable shared state and read access only to immutable shared state. General reader agents have read access to both mutable shared state and immutable shared state and have no write access. Immutable reader agents have read access to only immutable shared state and have no write access. By appropriate scheduling of the different types of agents, data races may be reduced or eliminated.
    Type: Grant
    Filed: December 29, 2009
    Date of Patent: April 8, 2014
    Assignee: Microsoft Corporation
    Inventors: Artur Laksberg, Joshua D. Phillips, Niklas Gustafsson
  • Patent number: 8650570
    Abstract: A runtime environment of a computer system is provided that creates first and second scheduler instances in a process. Each scheduler instance includes allocated processing resources and is assigned a set of tasks for execution. Each scheduler instance schedules tasks for execution using the allocated processing resources to perform the work of the process.
    Type: Grant
    Filed: June 2, 2008
    Date of Patent: February 11, 2014
    Assignee: Microsoft Corporation
    Inventors: Paul Ringseth, Genevieve Fernandes, Niklas Gustafsson, Rick Molloy, Rahul Patil, Philip Lucido
  • Patent number: 8566830
    Abstract: A scheduler in a process of a computer system includes a local collection of tasks for each processing resource allocated to the scheduler and at least one general collection of tasks. The scheduler assigns each task that becomes unblocked to the local collection corresponding to the processing resource that caused the task to become unblocked. When a processing resource becomes available, the processing resource attempts to execute the most recently added task in the corresponding local collection. If there are no tasks in the corresponding local collection, the available processing resource attempts to execute a task from the general collection.
    Type: Grant
    Filed: May 16, 2008
    Date of Patent: October 22, 2013
    Assignee: Microsoft Corporation
    Inventors: Paul F. Ringseth, Niklas Gustafsson, Genevieve Fernandes
  • Patent number: 8566544
    Abstract: 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 H 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.
    Type: Grant
    Filed: December 29, 2009
    Date of Patent: October 22, 2013
    Assignee: Microsoft Corporation
    Inventors: Niklas Gustafsson, Artur Laksberg, Joshua D. Phillips, John J. Duffy
  • Patent number: 8561072
    Abstract: 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.
    Type: Grant
    Filed: May 16, 2008
    Date of Patent: October 15, 2013
    Assignee: Microsoft Corporation
    Inventors: Paul F. Ringseth, Genevieve Fernandes, Niklas Gustafsson, Rick Molloy
  • Patent number: 8549506
    Abstract: 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.
    Type: Grant
    Filed: April 27, 2010
    Date of Patent: October 1, 2013
    Assignee: Microsoft Corporation
    Inventors: Henricus Johannes Maria Meijer, Mads Torgersen, Neal M. Gafter, Niklas Gustafsson
  • Patent number: 8407728
    Abstract: A compositional model referred to as a source-target pattern for connecting processes into process networks in a general, flexible, and extensible manner is provided. The model allows common process algebra constructs to be combined with data flow networks to form process networks. Process algebraic operations may be expressed in terms of the compositional model to form data flow networks that provide fully interoperable process algebraic operations between processes.
    Type: Grant
    Filed: June 2, 2008
    Date of Patent: March 26, 2013
    Assignee: Microsoft Corporation
    Inventors: Niklas Gustafsson, David Callahan
  • Publication number: 20120324431
    Abstract: 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.
    Type: Application
    Filed: June 16, 2011
    Publication date: December 20, 2012
    Applicant: Microsoft Corporation
    Inventors: Stephen Harris Toub, Mads Torgersen, Lucian Jules Wischik, Anders Hejlsberg, Niklas Gustafsson, Dmitry Lomov, Matthew J. Warren
  • Patent number: 8316369
    Abstract: 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.
    Type: Grant
    Filed: December 29, 2009
    Date of Patent: November 20, 2012
    Assignee: Microsoft Corporation
    Inventors: Artur Laksberg, Joshua D. Phillips, Niklas Gustafsson
  • Patent number: 8291426
    Abstract: A memory allocator is provided for each processor resource in a process of a computer system. Each memory allocator includes a set of pages, a locally freed list of objects, and a remotely freed list of objects. Each memory allocator requests the pages from an operating system and allocates objects to all execution contexts executing on a corresponding processing resource. Each memory allocator attempts to allocate an object from the locally freed list before allocating an object from the remotely freed list or an allocated page.
    Type: Grant
    Filed: June 2, 2008
    Date of Patent: October 16, 2012
    Assignee: Microsoft Corporation
    Inventors: Niklas Gustafsson, Paul Ringseth, Philip Lucido
  • Patent number: 8220002
    Abstract: The isolation of user-interactive components form the logical components of an exemplary computing application environment is provided. In an illustrative implementation, an exemplary computing application environment comprises one or more user interface (UI) elements that run on an exemplary user-interface processing thread and application logic that illustratively operatively runs asynchronously on at least one other processing thread. In an illustrative implementation an isolation boundary is provided between an exemplary user interface and the application logic of the exemplary computing application environment. In the illustrative implementation, the isolation boundary can comprise an asynchronous view contract comprising a channel between an exemplary view layer of an exemplary user interface (e.g., one or more user-interactive components) and application logic.
    Type: Grant
    Filed: January 25, 2008
    Date of Patent: July 10, 2012
    Assignee: Microsoft Corporation
    Inventors: John J Rivard, David Paul Hill, Niklas Gustafsson
  • Publication number: 20120159512
    Abstract: One embodiment includes a method of performing dataflow processing. The method includes representing a first asynchronous processing node as a first future. The first future represents the lifecycle of processing of the first asynchronous processing node. The method further includes representing one or more other asynchronous operations as one or more other futures. The one or more other futures represent the asynchronous completion of one or more operations' processing. The first future and the one or more other futures are represented as a single composite future. The single composite future represents completion of processing of the combination of the first asynchronous processing node and the one or more other asynchronous operations.
    Type: Application
    Filed: December 17, 2010
    Publication date: June 21, 2012
    Applicant: Microsoft Corporation
    Inventors: Zlatko V. Michailov, Niklas Gustafsson, Daniela Cristina Manu, Stephen H. Toub
  • Publication number: 20110265070
    Abstract: 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.
    Type: Application
    Filed: April 27, 2010
    Publication date: October 27, 2011
    Applicant: Microsoft Corporation
    Inventors: Henricus Johannes Maria Meijer, Mads Torgersen, Neal M. Gafter, Niklas Gustafsson
  • Patent number: 8006055
    Abstract: Protection entries and techniques for providing fine granularity computer memory protection are described herein. A method of protecting a computer memory may include separating or parsing the computer memory, containing data or code, into blocks and creating protection entries for each block. The protection entries optionally include a reference field for identifying a block of memory, and a protection field for specifying one or more levels of access to the identified block of memory. The protection entries may then be used to pass messages between various system entities, the messages specifying one or more levels of access to the one or more blocks of memory or code.
    Type: Grant
    Filed: March 4, 2008
    Date of Patent: August 23, 2011
    Assignee: Microsoft Corporation
    Inventors: Bradley M Waters, Niklas Gustafsson
  • Publication number: 20110173595
    Abstract: The compilation of user code. Upon accessing the user code, the compiler determines that the user code includes at least one top-level asynchronous operation that is 1) to operate at a top-level of the stack of the programmed code, 2) that is programmed using a syntax for synchronous operations and 3) includes at least one indicator that the operation is to be asynchronous. The user code is then compiled such that the top-level asynchronous operation programmed in the syntax for synchronous operations is transformed into an asynchronous pattern suitable for the runtime environment.
    Type: Application
    Filed: January 8, 2010
    Publication date: July 14, 2011
    Applicant: MICROSOFT CORPORATION
    Inventors: Niklas Gustafsson, Artur Laksberg
  • Publication number: 20110167248
    Abstract: 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.
    Type: Application
    Filed: January 7, 2010
    Publication date: July 7, 2011
    Applicant: Microsoft Corporation
    Inventors: Neal M. Gafter, Mads Torgersen, Henricus Johannes Maria Meijer, Niklas Gustafsson