| Scheduling (from schema) is the process of assigning tasks to a set of
resources. It is an important concept in many areas such as computing and production processes.
In mathematical terms, a scheduling problem is often solved as an optimization problem, with the objective of maximizing a measure of schedule quality. For example, an airline
might wish to minimize the number of airport gates required for its aircraft in order to reduce its operating costs.
Scheduling is important in modern production and chemical industries, where it can have a major impact in the productivity of
a process. Common objectives in this type of scheduling are to minimize the makespan (duration) of production or to maximize
total profit for a given set of customer demands. Modern computerised scheduling tools greatly outperform the manual (heuristic)
scheduling methods commonly employed in the industry.
It is a key concept in multitasking and multiprocessing operating system
design, and in real-time operating system
design. It refers to the way processes are assigned priorities in a priority queue. This assignment is carried out by software known as a
scheduler.
In general-purpose operating systems, the goal of the scheduler is to balance processor loads, and prevent any one process from either monopolizing
the processor or being starved for resources. In real-time environments, such as devices for automatic control in industry (for example robotics), the scheduler also must ensure that processes can meet deadlines; this is crucial for keeping the system stable.
Many scheduling problems are NP-hard and finding efficient ways of solving larger
scheduling problems is an active research area. Common mathematical techniques used to solve scheduling problems are Mixed
Integer Linear Programming, Logical programming and Constraint programming.
Common scheduling practices
Disk arm scheduling
|