Method and system to optimize capacity of a CDMA cellular communication system |
| Accordingly, an object of the present invention is to provide a method and system which optimizes ... |
|
Method and apparatus for providing a synchronous communication environment |
| We claim: 1. A method for providing synchronous communication in a communication system having a ... |
|
Method and apparatus for performing cut-through virtual circuit merging |
| OF THE INVENTION An improved method and apparatus for performing virtual circuit merging in a ... |
|
Process for thin film formation |
| An object of the present invention is to solve the problems described above and to provide a ... |
|
Diffuse reflectance probe |
| The present invention is based upon the discovery that a diffuse reflectance probe may provide ... |
|
Antenna for a portable radio communication device |
| The present invention is, in a first embodiment, a radiation reducing or re-directing device ... |
|
Antenna system for dual mode satellite/cellular portable phone |
| OF THE INVENTION Referring now to the drawing in detail, wherein identical numerals indicate the ... |
|
Mobile communicator |
| The purpose of the present invention is to create a new mobile communicator by which the above ... |
|
Data network communications |
| It is an object of the present invention to overcome or at least mitigate the above noted ... |
|
|
Providing predictable scheduling of programs using a repeating precomputed schedule
| Details |
Inventors: Jones, Michael B.; Draves, Jr., Richard P.; Rosu, Daniela; Rosu, Marcel-Catalin;
Assignee: Microsoft Corporation (Redmond, WA)
Primary Examiner: Donaghue; Larry D.
Assistant Examiner:
Attorney, Agent or Firm: Leydig, Voit & Mayer, Ltd.
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. When the processor becomes available to execute threads, the scheduler advances from the current node to a new current node in accordance with a root-to-leaf traversal of the scheduling graph. After advancing to the new current node, the scheduler executes one or more threads of the activity to which the new current node is dedicated for the execution interval length associated with the new current node. In a further preferred embodiment, the scheduler allocates specific iterations through specific nodes to satisfy the constraints submitted by threads. |
|
DETAILED DESCRIPTION The present invention provides predictable scheduling of real-time programs and non-real-time programs using a repeating precomputed schedule. In accordance with the invention, a thread scheduling software facility ("the scheduler") overcomes the shortcomings of the conventional ad hoc approach to scheduling by utilizing a precomputed schedule that specifies the future execution of activities and threads having outstanding time constraints, which significantly reduces the processing required to (A) identify the next thread to execute when the processor becomes available and (B) determine the amount of time for which to execute the identified thread. As a result, the process of identifying the next thread to execute and determining the amount of time for which to execute the identified thread can be performed in a bounded amount of time that is independent of the number of threads and activities being scheduled. The precomputed schedule allows the scheduler to assess the feasibility of reservations and time constraints when they are submitted, and immediately refuse any nonfeasible reservations and time constraints. The precomputed schedule also allows the scheduler to guarantee that reservations will be honored with regularity. The precomputed schedule further allows the scheduler to maximize the length of individual intervals assigned to each thread, thereby allowing each thread to make more efficient use of caches. The scheduler further enables blocked activities to receive extra processing time when they are unblocked. The scheduler further effectively schedules the simultaneous execution of real-time and non-real-time programs on the same processor. The scheduler further is able to effectively schedule non-real-time programs in the complete absence of real-time programs, reservations, and constraints. The precomputed schedule is preferably represented as a directed acyclic graph of nodes, each node corresponding to an execution interval of a specified length, that is incrementally traversed to determine which activity to execute next
|
|