Patents by Inventor Richard P. Draves

Richard P. Draves 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: 7616575
    Abstract: A system and method for link quality routing uses a weighted cumulative expected transmission time path metric. A system for routing in a multi-hop ad hoc network, and a method for measuring the link quality of a route in the network, include assignment of a weight to a link in accordance with an expected transmission time of a packet over the link, and a combining of individual link weights for a route into a path metric. The path metric accounts for interference among links that use a shared channel. In the calculation of the path metric, the expected transmission times of links that interfere with one another are added, while the expected transmission times for non-interfering links are considered separately.
    Type: Grant
    Filed: March 15, 2005
    Date of Patent: November 10, 2009
    Assignee: Microsoft Corporation
    Inventors: Jitendra D. Padhye, Richard P. Draves, Jr., Brian D. Zill
  • Patent number: 7571438
    Abstract: A resource management mechanism is provided to ensure that real-time application programs running on a single machine or set of machines exhibit predictable behavior. The resource management mechanism employs the abstraction of an activity which serves as the basis for granting resource reservations and for accounting. An activity submits a request for resources in specified amounts to a resource planner. The activity is resource self-aware so that it is aware of its resource requirements. The activity may query resource providers to obtain resource requirements for particular operations. The resource planner determines whether the activity should be granted the requested reservation by employing an internal policy. Policy is separated by mechanism so that the resource planner may implement any of a number of policies. The resource planner may choose to grant the reservation to an activity or deny the request by an activity.
    Type: Grant
    Filed: July 18, 2001
    Date of Patent: August 4, 2009
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Paul J. Leach, Richard P. Draves, Jr., Joseph S. Barrera, III
  • Patent number: 6792445
    Abstract: The present invention provides predictable scheduling of programs using a repeating precomputed schedule. In a preferred embodiment, a scheduler accesses an activity scheduling graph. The activity scheduling graph is comprised of nodes each representing a recurring execution interval, and has one root, one or more leaves, and at least one path from the root to each leaf. Each node is on at least one path from the root to a leaf, and the number of times the execution interval represented by each node occurs during the traversal of the graph is equal to the number of paths from the root to a leaf that the node is on. Each node has associated with it an execution interval length, and is adapted to being dedicated to executing the threads of a single activity. The scheduler first selects a current node within the accessed scheduling graph.
    Type: Grant
    Filed: May 4, 2000
    Date of Patent: September 14, 2004
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Richard P. Draves, Jr., Daniela Rosu, Marcel-Catalin Rosu
  • Patent number: 6760909
    Abstract: A virtual memory system includes a hardware-implemented translation lookaside buffer (HTLB) as well as a software-implemented translation lookaside buffer (VTLB). The VTLB is in the system's unmapped memory. The system further includes a plurality of address maps, corresponding to an operating system kernel and to individual tasks executing within the system. The kernel has an address space which includes both mapped and unmapped memory. The address maps corresponding to the individual tasks are stored in the mapped memory of the kernel's address space. The address map corresponding to the kernel itself, however, is stored in the kernel's unmapped memory. HTLB misses are handled by referring to the VTLB. VTLB misses are handled by referring to an appropriate one of the address maps. The code for handling these misses resides in unmapped memory of the kernel's address space. This arrangement prevents recursive TLB misses, without requiring permanent or “wired” VTLB entries.
    Type: Grant
    Filed: July 14, 1998
    Date of Patent: July 6, 2004
    Assignee: Microsoft Corporation
    Inventors: Richard P. Draves, Gilad Odinak
  • Patent number: 6718360
    Abstract: The present invention provides predictable scheduling of programs using a repeating precomputed schedule. In a preferred embodiment, a scheduler accesses an activity scheduling graph. The activity scheduling graph is comprised of nodes each representing a recurring execution interval, and has one root, one or more leaves, and at least one path from the root to each leaf. Each node is on at least one path from the root to a leaf, and the number of times the execution interval represented by each node occurs during the traversal of the graph is equal to the number of paths from the root to a leaf that the node is on. Each node has associated with it an execution interval length, and is adapted to being dedicated to executing the threads of a single activity. The scheduler first selects a current node within the accessed scheduling graph.
    Type: Grant
    Filed: May 4, 2000
    Date of Patent: April 6, 2004
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Richard P. Draves, Jr., Daniela Rosu, Marcel-Catalin Rosu
  • Patent number: 6584489
    Abstract: A method and system for scheduling the use of a computer system resource using a resource planner and a resource provider are provided. In a preferred embodiment, a resource is scheduled for use by a plurality of consumer entities. Each consumer entity may request the commitment of a share of the resource. The method and system use representations of resource usage policy, present commitments of shares of the resource, and present commitments of specified amounts of the resource over a specified period of time. The method and system first receive a request from a consumer entity for the commitment of a specified share of the resource. In response, the method and system determine whether the specified share of the resource should be committed to the requesting consumer entity. This determination is based on the representations of resource usage policy and present commitments of shares of the resource.
    Type: Grant
    Filed: March 11, 1998
    Date of Patent: June 24, 2003
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Paul J. Leach, Richard P. Draves, Jr., Joseph S. Barrera, III, Steven P. Levi, Richard F. Rashid, Robert P. Fitzgerald
  • Patent number: 6490612
    Abstract: The present invention provides predictable scheduling of programs using a repeating precomputed schedule. In a preferred embodiment, a scheduler accesses an activity scheduling graph. The activity scheduling graph is comprised of nodes each representing a recurring execution interval, and has one root, one or more leaves, and at least one path from the root to each leaf. Each node is on at least one path from the root to a leaf, and the number of times the execution interval represented by each node occurs during the traversal of the graph is equal to the number of paths from the root to a leaf that the node is on. Each node has associated with it an execution interval length, and is adapted to being dedicated to executing the threads of a single activity. The scheduler first selects a current node within the accessed scheduling graph.
    Type: Grant
    Filed: May 4, 2000
    Date of Patent: December 3, 2002
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Richard P. Draves, Jr., Daniela Rosu, Marcel-Catalin Rosu
  • Patent number: 6405262
    Abstract: A computer system includes a plurality of client processes executing in respective address spaces and at least one server process executing in a different address space than the client processes. The server process has one or more available server objects for potential use by the client processes. The server objects are accessible by the client processes through a plurality of server object interfaces dynamically created in response to demand for said interfaces by the client processes. The server object interfaces are destroyed when there is no further demand for them. Each object interface can be simultaneously held for use during at least a portion of its lifetime by more than one of the client processes. The computer system further includes one or more client-side ping managers and at least one server-side ping manager. Each client process registers interfaces it is holding for use with an associated client-side ping manager.
    Type: Grant
    Filed: July 14, 1995
    Date of Patent: June 11, 2002
    Assignee: Microsoft Corporation
    Inventors: Keith R. Vogel, Richard P. Draves, Paul J. Leach
  • Patent number: 6385649
    Abstract: A method for compressing a routing table involves constructing a binary tree representation of the routing table. The compression method makes three passes through the tree. In a first pass, the compression method propagates routing information down to the tree leaves. During this pass, the program assigns every leaf node in the tree an associated next hop or an inherited next hop from a higher level ancestral node. In a second pass, the compression method migrates prevalent next hops up the tree. This bottom up pass involves forming a set of next hops at a parent node by supernetting the sets of next hops A and B for a pair of child nodes corresponding to the parent node, according to the following operation: A*B=A∪B, if A∩B=&phgr; A∩B, if A∩B≠&phgr; where A*B is a set of next hops formed at the parent node. In the third pass, the compression method eliminates redundant branches in the tree.
    Type: Grant
    Filed: November 6, 1998
    Date of Patent: May 7, 2002
    Assignee: Microsoft Corporation
    Inventors: Richard P. Draves, Christopher Kevin King, Srinivasan Venkatachary
  • Patent number: 6349355
    Abstract: A computer system has a microprocessor that can execute in a non-privileged user mode and a privileged kernel mode. A user virtual address space is used when the microprocessor is in the user mode, and a kernel virtual address space is used when the microprocessor is in the kernel mode. Each of the address spaces has the same range of virtual addresses that is designated for shared components. The user virtual address space is mapped to an offset position within the kernel address space. When a user process calls a kernel function with a pointer argument, the pointer is biased before being dereferenced to account for the offset of the user address space within the kernel address space. This allows for sharing of position-dependent code, while still allowing the kernel to access the entire user address space.
    Type: Grant
    Filed: February 6, 1997
    Date of Patent: February 19, 2002
    Assignee: Microsoft Corporation
    Inventors: Richard P. Draves, Scott Cutshall, Gilad Odinak
  • Publication number: 20020007389
    Abstract: A resource management mechanism is provided to ensure that real-time application programs running on a single machine or set of machines exhibit predictable behavior. The resource management mechanism employs the abstraction of an activity which serves as the basis for granting resource reservations and for accounting. An activity submits a request for resources in specified amounts to a resource planner. The activity is resource self-aware so that it is aware of its resource requirements. The activity may query resource providers to obtain resource requirements for particular operations. The resource planner determines whether the activity should be granted the requested reservation by employing an internal policy. Policy is separated by mechanism so that the resource planner may implement any of a number of policies. The resource planner may choose to grant the reservation to an activity or deny the request by an activity.
    Type: Application
    Filed: July 18, 2001
    Publication date: January 17, 2002
    Applicant: Microsoft Corporation
    Inventors: Michael B. Jones, Paul J. Leach, Richard P. Draves, Joseph S. Barrera
  • Patent number: 6317774
    Abstract: The present invention provides predictable scheduling of programs using a repeating precomputed schedule. In a preferred embodiment, a scheduler accesses an activity scheduling graph. The activity scheduling graph is comprised of nodes each representing a recurring execution interval, and has one root, one or more leaves, and at least one path from the root to each leaf. Each node is on at least one path from the root to a leaf, and the number of times the execution interval represented by each node occurs during the traversal of the graph is equal to the number of paths from the root to a leaf that the node is on. Each node has associated with it an execution interval length, and is adapted to being dedicated to executing the threads of a single activity. The scheduler first selects a current node within the accessed scheduling graph.
    Type: Grant
    Filed: January 9, 1997
    Date of Patent: November 13, 2001
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Richard P. Draves, Jr., Daniela Rosu, Marcel-Catalin Rosu
  • Patent number: 6282561
    Abstract: A resource management mechanism is provided to ensure that real-time application programs running on a single machine or set of machines exhibit predictable behavior. The resource management mechanism employs the abstraction of an activity which serves as the basis for granting resource reservations and for accounting. An activity submits a request for resources in specified amounts to a resource planner. The activity is resource self-aware so that it is aware of its resource requirements. The activity may query resource providers to obtain resource requirements for particular operations. The resource planner determines whether the activity should be granted the requested reservation by employing an internal policy. Policy is separated by mechanism so that the resource planner may implement any of a number of policies. The resource planner may choose to grant the reservation to an activity or deny the request by an activity.
    Type: Grant
    Filed: December 7, 1995
    Date of Patent: August 28, 2001
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Paul J. Leach, Richard P. Draves, Jr., Joseph S. Barrera, III
  • Patent number: 6003061
    Abstract: A method and system for scheduling the use of a computer system resource using a resource planner and a resource provider is provided. In a preferred embodiment, a resource is scheduled for use by a plurality of consumer entities. Each consumer entity may request the commitment of a share of the resource. The method and system utilizes representations of resource usage policy, present commitments of shares of the resource, and present commitments of specified amounts of the resource over specified period of time. The method and system first receives a request from a consumer entity for the commitment of a specified share of the resource. In response, the method and system determines whether the specified share of the resource should be committed to the requesting consumer entity. This determination is based on the representations of resource usage policy and present commitments of shares of the resource.
    Type: Grant
    Filed: December 7, 1995
    Date of Patent: December 14, 1999
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Paul J. Leach, Richard P. Draves, Jr., Joseph S. Barrera, III, Steven P. Levi, Richard F. Rashid, Robert P. Fitzgerald
  • Patent number: 5950221
    Abstract: The invention includes a computer system having a processor that executes program instructions in privileged and non-privileged execution modes. A user stack is used when the processor is executing in the non-privileged execution mode. A kernel memory stack is used when the processor is executing in the privileged execution mode. The kernel memory stack can grow and shrink dynamically as it is used by its associated thread, through the use of allocate-on-demand memory. A stack overflow handler is executed from within the kernel to resolve allocate-on-demand faults. The stack handler uses only fixed-size memory stacks.
    Type: Grant
    Filed: February 6, 1997
    Date of Patent: September 7, 1999
    Assignee: Microsoft Corporation
    Inventors: Richard P. Draves, Scott Cutshall, Gilad Odinak
  • Patent number: 5873124
    Abstract: A computer system includes physical memory, a virtual memory system, and a protected operating system kernel. The kernel has kernel functions that accept and use virtual memory addresses from user processes. When an invalid virtual memory address is used by a kernel function, the memory address is automatically mapped to a scratch location in physical memory, so that the kernel function accesses the scratch location rather than generating an exception.
    Type: Grant
    Filed: February 6, 1997
    Date of Patent: February 16, 1999
    Assignee: Microsoft Corporation
    Inventor: Richard P. Draves
  • Patent number: 5835964
    Abstract: A virtual memory system includes a hardware-implemented translation lookaside buffer (HTLB) as well as a software-implemented translation lookaside buffer (VTLB). The VTLB is in the system's unmapped memory. The system further includes a plurality of address maps, corresponding to an operating system kernel and to individual tasks executing within the system. The kernel has an address space which includes both mapped and unmapped memory. The address maps corresponding to the individual tasks are stored in the mapped memory of the kernel's address space. The address map corresponding to the kernel itself, however, is stored in the kernel's unmapped memory. HTLB misses are handled by referring to the VTLB. VTLB misses are handled by referring to an appropriate one of the address maps. The code for handling these misses resides in unmapped memory of the kernel's address space. This arrangement prevents recursive TLB misses, without requiring permanent or "wired" VTLB entries.
    Type: Grant
    Filed: April 29, 1996
    Date of Patent: November 10, 1998
    Assignee: Microsoft Corporation
    Inventors: Richard P. Draves, Gilad Odinak
  • Patent number: 5812844
    Abstract: A method and system for scheduling the execution of threads using optional time-specific constraints is provided. In a preferred embodiment, a scheduler schedules the execution of a plurality of threads each specifying either a percentage processor time scheduling constraint, indicating that a certain percentage of processor time should be dedicated to the execution of the thread, or a deadline scheduling constraint, indicating that a specified quantity of work should be done by the thread by a specified time deadline. For each thread specifying a percentage processor time scheduling constraint, the scheduler determines a restart time corresponding to the percentage processor time scheduling constraint. For each thread specifying a deadline scheduling constraint, the scheduler determines a restart time corresponding to the deadline scheduling constraint. The scheduler then utilizes the determined restart times for scheduling the threads by selecting the thread having the earliest restart time for execution.
    Type: Grant
    Filed: December 7, 1995
    Date of Patent: September 22, 1998
    Assignee: Microsoft Corporation
    Inventors: Michael B. Jones, Paul J. Leach, Richard P. Draves, Jr., Joseph S. Barrera, III, Steven P. Levi, Richard F. Rashid, Robert P. Fitzgerald
  • Patent number: 5802590
    Abstract: A method and system for allowing processes to access resources. A kernel of an operating system maintains a system-wide resource table. This resource table contains resource entries. When a resource is allocated, the kernel generates a key for the resource. The key is a very large number so as to prevent a malicious process from gaining unauthorized access to the resource. The kernel also hashes the key to generate an index into the resource table that is used as a handle. The kernel stores the key in a resource entry that is indexed by the handle. The handle.backslash.key pair is sent to a process. The process accesses the resources by passing handle.backslash.key pairs to the kernel. The kernel compares the passed key with a key that is stored in the resource entry referenced by the passed handle. When the stored key and the passed key match, the process is allowed to access the resource. When the stored key and the passed key do not match, the kernel rehashes the passed key to generate a new handle.
    Type: Grant
    Filed: December 13, 1994
    Date of Patent: September 1, 1998
    Assignee: Microsoft Corporation
    Inventor: Richard P. Draves
  • Patent number: 5473362
    Abstract: A scalable method and system for easily scheduling data transfer for a video-on-demand server system is provided. A strategy for locating available bandwidth and allocating available bandwidth to subscribers as needed is provided. The input/output bandwidth of storage devices that store data for video image sequences is modelled as a series of bandwidth units. Each bandwidth unit has sufficient capacity to service an individual subscriber during a scheduling cycle. Video image sequences or other data sequences are striped across storage devices such that data for a data sequence is forwarded to the subscriber by reading from a sequence of storage devices in consecutive time frames.
    Type: Grant
    Filed: November 30, 1993
    Date of Patent: December 5, 1995
    Assignee: Microsoft Corporation
    Inventors: Robert P. Fitzgerald, Joseph S. Barrera, III, William J. Bolosky, Richard P. Draves, Jr., Michael B. Jones, Steven P. Levi, Nathan P. Myhrvold, Richard F. Rashid, Garth A. Gibson