Scheduling algorithm
In computer science, a scheduling algorithm is the method by which threads, processes or data flows are given access to system resources (e.g. processor time, communications bandwidth). This is usually done to load balance a system effectively or achieve a target Quality of service. The need for a scheduling algorithm arises from the requirement for most modern systems to perform multitasking (execute more than one process at a time) and Multiplexing (transmit multiple flows simultaneously).
In computing and multitasking
The algorithm used may be as simple as round-robin in which each process is given equal time (for instance 1 ms,+
In computer networks and multiplexing
In packet-switched computer networks and other statistical multiplexing, the notion of a scheduling algorithm is used as an alternative to first-come first-served queuing of data packets. In advanced packet radio wireless networks such as HSDPA 3.5G cellular system, channel-dependent scheduling may be used to take advantage of favourable channel conditions to increase the throughput and system spectral efficiency. The simplest best-effort scheduling algorithms are round-robin, fair queuing (a max-min fair scheduling algorithm), proportionally fair scheduling and maximum throughput. If differentiated or guaranteed quality of service is offered, as opposed to best-effort communication, weighted fair queuing may be utilized.
In computer I/O
Determines the order in which disk I/O requests are pushed to the disk device.
See also
- Scheduling (computing)
- Job Shop Scheduling
- Scheduling (communications)
- I/O scheduling
- Atropos scheduler
External links
- Josh Aas' introduction to the Linux 2.6.8.1 CPU scheduler implementation
- Peter Brucker, Sigrid Knust. Complexity results for scheduling problems [1]
- TORSCHE Scheduling Toolbox for Matlab is a toolbox of scheduling and graph algorithms.