Home > Pre-emptive multitasking
Pre-emptive multitasking is a form of multitasking in which processes are not allowed to take an indefinitely long time to complete execution in the CPU. Each process, in turn, is granted a portion of CPU time (usually called a time slice, on the order of milliseconds). A process which does not relinquish the CPU voluntarily within its time slice is forcibly context-switched with the next process in scheduling queue.Context-switching can usually happen for many different reasons. Some common reasons are:
- the process has consumed its time slice, and the system clock interrupt pre-empts the process
- the process goes to wait state (often due to planned sleeping, waiting for an I/O event to happen, or just Mutual exclusion)
- a higher priority process becomes ready for execution, which causes a pre-emption
- the process gives away its time slice voluntarily
- the process terminates itself
Some OSes permit processes to deny pre-emption for a period of time. e.g. AmigaOS would permit a process to refuse to context-switch in order to read system data structures that might be altered by other processes.
Some OSes always forbid lower priority processes to pre-empt higher priority processes. Some OSes allow it occasionally. See scheduling.
Because this all happens at extreme high speed, the computer appears to be doing many things at the same time.
Operating systems
Computer terminology