Multitasking
In informatica, un sistema operativo multitasking permette di eseguire più programmi contemporaneamente: se ad esempio viene chiesto al sistema di eseguire contemporaneamente due processi A e B, la CPU eseguirà per qualche istante il processo A, poi per qualche istante il processo B, poi tornerà ad eseguire il processo A e così via. Ad occuparsi di alternare l'esecuzione dei processi è un componente del sistema operativo, lo scheduler. A seconda di quale strategia di servizio viene seguita (cioè di quale algoritmo di scheduling e di quali e quanti gradi di priorità dei processi vengono gestiti dal sistema operativo e dall'hardware), lo scheduler controlla la ripartizione del tempo di CPU tra tutti i processi attivi.
Esistono due diversi modi di implementare praticamente il multitasking: senza prelazione (cooperative) e con prelazione (preemptive).
Multitasking senza prelazione (cooperative)
Detto anche multitasking cooperative, in questo caso caso i programmi cedono volontariamente il controllo al sistema operativo una volta finita l'operazione in corso: è il caso di Mac OS fino alla versione 9, o di Windows 3.0 e 3.1. Il vantaggio maggiore di questo metodo è che non ha bisogno di supporto hardware e si può implementare su ogni tipo di architettura. Il grave svantaggio è che un singolo programma che si rifiuta di cedere il controllo, o che si ferma per qualche errore, può bloccare l'intero computer, perché il sistema operativo non ha modo di riprendere il controllo da solo. Lo scheduler è in questo caso meno critico, perché il "quanto di tempo" durante il quale i programmi sono attivi è mediamente piuttosto lungo.
Multitasking con prelazione (preemptive)
La prelazione è l'atto di interrompere un programma a prescindere dalla volontà del programma stesso, grazie a delle particolari strutture hardware integrate nel microprocessore che automatizzano il context switch, il cambio di "ambiente" software dal nuovo al vecchio programma.
Un multitasking con prelazione (preemptive) non può quindi essere implementato se la piattaforma hardware non mette a disposizione gli strumenti necessari, ma in compenso, grazie all'hardware, il cambio di contesto è molto più veloce favorendo l'adozione di quanti di tempo più piccoli, e una esecuzione più "fluida" dei vari processi. Lo scheduler deve quindi necessariamente essere più efficiente, pena il degrado delle prestazioni globali. Tuttavia in questo caso c'è una maggior separazione fra processi. Il preemptive multitask è stato adottato dalla maggior parte dei sistemi operativi moderni:
Primi sistemi operativi con multitasking preemptive
Il primo sistema operativo di larga diffusione ad adottare il multitasking preemptive fu AmigaOS, nel 1985, quando Unix era ancora appannaggio delle università e dei grandi centri di calcolo. Poco prima erano già usciti due computer di successo inferiore, l'Apple Lisa e il Sinclair QL. L'Apple Lisa, computer a 16 bit di fascia alta, non ebbe successo perché Apple preferì concentrarsi sui Macintosh e sul multitasking cooperativo. Il Sincair QL (Quantum Leap) era un home/personal computer basato sul 68008 ad 8 bit. Il SO del QL, chiamato QDOS, era avanti rispetto ai suoi tempi (aveva integrati un potente interprete basic, programmi di utility e produttività e una primitiva GUI a finestre), ma risultò fortemente viziato da bug, perché immesso sul mercato troppo in fretta nell'intento di contrastare l'assai pubblicizzata uscita del Macintosh. Successivamente i problemi furono risolti, ma Sinclair aveva già venduto la divisione computer ad Amstrad che preferì abbandonare il prodotto.
Negli anni '90 il multitasking preemptive conobbe vasta diffusione con i sistemi operativi ancora oggi utilizzati: Windows dalla versione Windows 95 in poi, BeOS, GNU Linux e le varie versioni di Unix, ecc.