Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
AssigneeIntelect Communications, Inc.
InventorsLarry A. Turner, Edwin A. Osberg, James Kevin McCoy
Life of this patent
Estimating the term…
Abstract
This invention relates to embedded processing systems used for industrial, commercial, and medical automated systems in which microprocessors or digital signal processors are employed to perform a plurality of distinct tasks based on real-time events and conditions. In particular, this invention provides an efficient processing system and environment in which a variety of application threads may share the processing bandwidth and system resources cooperatively and efficiently, with minimized coupling of the application threads to each other and system resource control details.
Claims5
The method of allowing a plurality of processing threads to be executed by one or more processing units, wherein the steps comprise:
- (a) assigning each of said processing threads one of four state values, said state values being selected from “Currently Executing”, “Ready”, “Suspended”, and “Suspended-waiting”;
- (b) placing all threads which have been assigned a state value of “Ready” into a “Ready Queue”, said “Ready Queue” having an input and an output, said “Ready” threads being placed into the “Ready Queue” input in the order which threads are assigned a “Ready” state value first in time;
- (c) placing all threads which have been assigned a state value of “Suspended” into a “Suspended Queue”, said “Suspended Queue” having an input and an output, said “Suspended” threads being placed into the “Suspended Queue” input in the order which threads are assigned the “Suspended” state value first in time;
- (d) placing all threads which have been assigned a state value of “Suspended-waiting” into a “Suspended-waiting Queue”, said “Suspended-waiting Queue” having an input and an output, said “Suspended-waiting” threads being placed into the “Suspended-waiting Queue” input in the order which threads are assigned the “Suspended-waiting” state value first in time;
- (e) executing one or more threads which are assigned the state value of “Currently Executing” on said processing units until said threads under execution are changed to one of said state values of “Ready”, “Suspended”, and “Suspended-waiting”;
- (f) changing the state of the oldest waiting thread in the “Ready Queue” to “Currently Executing” and executing this thread on said processing units, thereby allowing threads queued in the “Ready Queue” to be executed in a first-in first-out manner;
- (g) assigning a state value of “Ready” to a thread in the “Suspended” queue and placing that thread into the “Ready Queue” input upon explicit request by a currently-executing thread;
- and
- (h) assigning a state value of “Ready” to a thread in the “Suspended-waiting Queue”, and placing that thread into the “Ready Queue” input upon occurrence of a pre-defined trigger event.
Dependencies are inferred from the claim text.