A multitasking method that shares processing time with all running programs. Preemptive multitasking creates a time-shared environment in which running programs receive a recurring slice of time from the CPU. Depending on the operating system, the time slice may be the same for all programs or it may be adjustable to meet the current mix of programs and users. For example, background programs can be given more CPU time no matter how heavy the foreground load and vice versa. In addition, the OS is able to grab the machine cycles that a modem or network program needs for uninterrupted processing. Mainframe operating systems have employed preemptive multitasking for decades. Desktop operating systems began to utilize this architecture starting with Windows 95 and Mac OS X. Contrast with non-preemptive multitasking. See multitasking.