Dynamically variable idle time thread scheduling
First Claim
1. A method for providing thread scheduling in a device, the device comprising one or more hardware elements operatively coupled to an operating system comprising a plurality of program modules, the method comprising:
- scheduling one or more threads according to a predetermined periodic rate;
determining whether or not there are any threads to execute; and
responsive to a determination that there are no threads to execute, deactivating at least one subset of components for a dynamic variable amount of time, the one subset being selected from a group of components comprising the hardware elements and the program modules, the dynamic variable amount of time being independent of the predetermined periodic rate and being based on a sleep state of a set of threads in a sleep queue.
2 Assignments
0 Petitions
Accused Products
Abstract
The subject matter provides dynamically variable idle time thread scheduling in a device with a high system tick rate. A device based on the subject matter includes an operating system, a set of application program modules, and one or more hardware elements. A thread scheduling mechanism in the operating system schedules threads at a periodic rate. Upon determining that there are no threads to execute, at least a subset of components are deactivated for a dynamic variable amount of time before they are is re-activated. The at least one subset of components are selected from the hardware elements, one or more program modules comprising the operating system, and the like. The dynamic variable amount of time is independent of the periodic rate and based on a sleep state of a set of threads in a sleep queue.
45 Citations
29 Claims
-
1. A method for providing thread scheduling in a device, the device comprising one or more hardware elements operatively coupled to an operating system comprising a plurality of program modules, the method comprising:
-
scheduling one or more threads according to a predetermined periodic rate;
determining whether or not there are any threads to execute; and
responsive to a determination that there are no threads to execute, deactivating at least one subset of components for a dynamic variable amount of time, the one subset being selected from a group of components comprising the hardware elements and the program modules, the dynamic variable amount of time being independent of the predetermined periodic rate and being based on a sleep state of a set of threads in a sleep queue. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for providing thread scheduling in a device, the device comprising one or more hardware elements operatively coupled to an operating system comprising a plurality of program modules, the method comprising:
-
scheduling one or more threads at a predetermined periodic rate;
determining whether or not there are any threads to execute; and
responsive to a determination that there are no threads to execute, deactivating at least one subset of components for a dynamic variable amount of time, the one subset being selected from a group of components comprising the hardware elements and the program modules, the dynamic variable amount of time being based on a sleep state of the a set of threads in a sleep queue and independent of the predetermined periodic rate; and
activating the one subset of components only when the operating system needs to perform an action selected from a group of actions comprising scheduling a thread for execution upon expiration of the dynamic variable amount of time since the deactivating, or upon receipt of an external event, processing the external event, wherein the external event is not a system timer event. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer-readable storage medium containing computer-executable instructions for scheduling threads in a device, the device including an operating system comprised of a plurality of program modules that are in turn coupled to one or more hardware elements, the computer-executable instructions comprising instructions for:
-
determining at a periodic rate whether or not there are any threads to execute; and
responsive to a determination that there are no threads to execute, deactivating at least one subset of components for a dynamic variable amount of time, the at least one subset being selected from a group of components comprising the one or more of the program modules and one or more of the hardware elements, the dynamic variable amount of time being independent of the periodic rate, the dynamic variable amount of time being based on a sleep state of a set of threads in a sleep queue. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
-
22. A device comprising:
-
a processor configured to fetch and execute a plurality of computer-executable instructions;
a plurality of hardware elements coupled to the processor; and
,a memory coupled to the processor for storing the computer-executable instructions comprising a scheduler program module, a hardware abstraction layer (HAL) program module, one or more operating system program modules, and a set of application program modules;
wherein the scheduler comprises computer-executable instructions for;
scheduling threads for execution at a periodic time interval; and
determining that there are no threads to execute;
wherein the HAL, responsive to the determining, comprises computer-executable instructions for deactivating, for a dynamic variable amount of time, at least one subset of components selected from a group of components comprising the scheduler, the hardware elements, the one or more operating system program modules, and the application program modules, the dynamic variable amount of time being independent of the periodic time interval and being based on a sleep state of a set of threads in a sleep queue. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29)
-
Specification