Come fa il computer a svolgere diverse cose contemporaneamente?

Non lo fa, in realtà. I computer possono svolgere soltanto un compito (o processo) alla volta. Ma un computer può cambiare compito molto rapidamente e indurre i lenti esseri umani a pensare che stia facendo diverse cose contemporaneamente. Questo viene chiamato timesharing.

Uno dei compiti del kernel è gestire il timesharing. Possiede una parte chiamata scheduler (pianificatore) che contiene informazioni relative a tutti gli altri processi (a parte il kernel) del vostro repertorio. Ogni sessantesimo di secondo nel kernel fa scattare un timer e viene generato un clock di interrupt. Lo scheduler ferma qualunque processo sia attualmente in esecuzione, lo sospende sul posto e passa il controllo a un altro processo.

Un sessantesimo di secondo può non sembrare una grande quantità di tempo. Ma per i microprocessori odierni è sufficiente per eseguire decine di migliaia di istruzioni macchina, che si possono tradurre in una gran mole di lavoro. Quindi anche se ci sono molti processi, ciascuno di essi può fare molte cose nella porzione di tempo a sua disposizione.

In pratica, non sempre un programma ottiene la sua intera porzione di tempo. Se scatta un interrupt da un dispositivo I/O, il kernel ferma effettivamente il compito corrente, esegue il gestore dell'interrupt e poi ritorna al compito corrente. Una tempesta di interrupt ad alta priorità può scombinare il normale funzionamento dei processi; questo fenomeno viene chiamato thrashing e per fortuna è molto difficile da provocare negli Unix moderni.

Infatti, la velocità dei programmi solo molto raramente è limitata dalla quantità di tempo macchina a loro disposizione (ci sono alcune eccezioni a questa regola, quali il suono o la generazione di grafica 3D). Molto più spesso dei ritardi si generano quando il programma deve attendere dei dati da un disco o da una connessione di rete.

Un sistema operativo che può di norma gestire più processi simultaneamente è detto multitasking. La famiglia di sistemi operativi Unix è stata progettata fin dall'inizio per il multitasking e lo fa molto bene; in modo molto più efficace rispetto a Windows o al Mac OS ai quali il multitasking è stato appiccicato a posteriori in seguito a un ripensamento e lo fanno in modo piuttosto povero. Il multitasking efficiente e affidabile costituisce buona parte di ciò che rende Linux superiore per le applicazioni di rete, le comunicazioni e i servizi Web.