IP Library Granted Patent US 7,089,557
Granted Patent B2
US 7,089,557 · App. 10/098,137 · Granted Aug 8, 2006

Data processing system and method for high-efficiency multitasking

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,089,557
App. No.
10/098,137
Granted
Aug 8, 2006
Kind
B2
Abstract

A method and data processing system are presented for multitasking a plurality of simultaneous tasks over one or more data processors. The invention significantly reduces the overhead required for multitasking without sacrificing responsiveness or flexibility. Both the number and length of context switches are reduced. The resulting environment is also capable of providing real-time operation and memory protection to tasks. No modifications to the tasks are required to make use of the invention.

Claims (40)

1. A method in a data processing system for dynamically executing a plurality of simultaneous tasks, said method comprising the steps of:

identifying tasks that are available for execution;

determining an order in which said identified tasks will execute;

for each said identified task, generating a sequence of instructions based on instructions contained in each said identified task;

for each said generated sequence of instructions:

identifying one or more endpoints, wherein said endpoints mark possible termination points of each said generated sequence of instructions;

generating any additional instructions needed for restoring any necessary state information; and

for each said identified endpoint, generating any additional instructions needed for saving any necessary state information;

generating an aggregate super sequence of instructions via ordering said identified tasks in the order determined in said determining step, the aggregate super sequence of instructions thereby including: said sequences of instructions generated for each identified task, any additional instructions needed for restoring any necessary state information and any additional instructions needed for saving any necessary state information; and

executing the aggregate super sequence of instructions.

2. The method of claim 1 , wherein said step of generating a sequence of instructions for each said identified task comprises copying appropriate sequences of instructions from said identified tasks.

3. The method of claim 1 , wherein a length of each said generated sequence of instructions is determined via estimating a required amount of execution time.

4. The method of claim 3 , wherein said estimating step comprises providing estimates which are maximum run-time guarantees calculated to provide a real-time environment.

5. The method of claim 1 , further comprising the step of caching at least some of information used in generating the sequences of instructions.

6. The method of claim 1 , wherein said step of generating a sequence of instructions for each said identified task comprises employing some information obtained from pre-computed data.

7. The method of claim 1 , wherein said step of generating a sequence of instructions for each said identified task comprises generating sequences of instructions when each said identified task is loaded into memory.

8. The method of claim 1 , wherein said step of determining an order in which said identified tasks will execute is performed by an operating system's scheduler.

9. The method of claim 1 , further comprising the step of adjusting lengths of at least one of said generated sequences of instructions to reduce overhead in switching between tasks.

10. The method of claim 1 , wherein the scheduler is a virtual machine.

11. The method of claim 1 , wherein said step of generating a sequence of instructions for each identified task comprises generating sequences of instructions via a code translator or recompiler.

12. The method of claim 1 , further comprising the step of generating any additional instructions necessary to enforce a memory protection model.

13. The method of claim 1 , further comprising the step of optimizing said generated sequences of instructions to increase efficiency.

14. A data processing system for dynamically executing a plurality of simultaneous tasks, comprising:

means for identifying tasks that are available for execution;

means for determining an order in which said identified tasks will execute;

means for generating, for each identified task, a sequence of instructions based on instructions contained in each said identified task;

means for identifying, for each said generated sequence of instructions, one or more endpoints, wherein said endpoints mark possible termination points of each said generated sequence of instructions;

means for generating, for each said generated sequence of instructions, any additional instructions needed for restoring any necessary state information;

means for generating, for each said identified endpoint, any additional instructions needed for saving any necessary state information;

means for generating an aggregate super sequence of instructions via ordering said identified tasks in the order determined by said determining means, the aggregate super sequence of instructions thereby including: said sequences of instructions generated for each identified task, any additional instructions needed for restoring any necessary state information and any additional instructions needed for saving any necessary state information; and

means for executing the aggregate super sequence of instructions.

15. The system according to claim 14 , further comprising means for estimating a required amount of execution time for a generated sequence of instructions.

16. The system according to claim 14 , further comprising means for caching at least some information used in the generation of a sequence of instructions.

17. The system according to claim 14 , wherein said means for generating instructions for each identified task further comprise means for reducing overhead in switching between tasks.

18. The system according to claim 14 , wherein said means for generating a sequence of instructions for each identified task further comprises means for translating or recompiling instructions.

19. The system according to claim 14 , further comprising means for generating any additional instructions necessary to enforce a memory protection model.

20. The method according to claim 1 , further comprising the steps of:

generating additional instructions needed, at possible termination points of the aggregate super sequence of instructions, for transferring execution of the aggregate super sequence of instructions to a scheduler; and

thereafter transferring execution of the aggregate super sequence of instructions to a scheduler;

said step of executing the aggregate super sequence of instructions comprising executing the aggregate super sequence of instructions with the scheduler.

Assignments (2)
MERGER Recorded Jan 22, 2016
From: AORISTIC TRANSFER LLC
To: XENOGENIC DEVELOPMENT LIMITED LIABILITY COMPANY
Reel/Frame 037563/0959 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2012
From: LEE, RUSTY SHAWN
To: AORISTIC TRANSFER LLC
Reel/Frame 028491/0729 →
Continuity (2)
Provisional Application 6028265000 · Apr 10, 2001
Related Publication 20020147758A1 · Oct 10, 2002