Anche se il sistema avesse pi— processori (SMP) i processi sarebbero sempre in numero maggiore rispetto ai processori, rendendo comunque necessario il loro alternarsi.
Il sottoprocesso (thread) Š, in &os2;, l'unit… per amministrare questa alternanza tra i processi. Ogni programma pu• avere numerosi sottoprocessi; per definizione ne deve avere almeno uno. Dato che per• pu• anche averne pi— di uno, l'alternanza pu• aver luogo anche tra i vari sottoprocessi di uno stesso programma. E' quello che si chiama multithreading. &os2;, a differenza di molti altri sistemi operativi, supporta pienamente il multithreading, e lo fa anche in maniera particolarmente intelligente ed affidabile.
La parte del kernel &os2; che gestisce il passaggio tra i vari sottoprocessi si chiama "scheduler".
Il termine inglese per sottoprocesso, "thread" ("filo"), fu scelto perch‚ all'interno del singolo sottoprocesso le istruzioni sono eseguite in sequenza, mentre tra pi— sottoprocessi Š impossibile sapere con sicurezza se una certa istruzione in un dato sottoprocesso sar… eseguita prima o dopo l'istruzione di un altro sottoprocesso. Il passaggio da un sottoprocesso all'altro riguarda solo &os2;, senza che il sottoprocesso ne sappia nulla (in sistemi SMP pu• darsi benissimo che diversi sottoprocessi dello stesso programma funzionino in contemporanea su diversi processori).
I programmi ben scritti utilizzano numerosi sottoprocessi, per garantire all'utente una risposta veloce rispetto alle sue azioni sulla tastiera e sul mouse. Se, per esempio, all'interno di un programma si lancia un comando che richiede molto tempo per essere eseguito, per svolgerlo dovrebbe essere lanciato un sottoprocesso secondario, in modo da liberare l'interfaccia utente (gestita dal sottoprocesso principale del programma) mentre il compito viene eseguito in secondo piano.
I programmi scritti male usano un solo sottoprocesso per l'interfaccia utente e l'esecuzione dei compiti. CosŤ facendo durante l'esecuzione del compito l'interfaccia utente resta bloccata.
I sottoprocessi possono avere priorit… differenti. Si veda "Priorit… dei sottoprocessi" per i dettagli.
In &os2;, con il termine processo si identifica l'applicazione che Š stata caricata in memoria. Ciascun processo deve avere almeno un sottoprocesso.
Ciascun processo contiene dati comuni e controlla l'accesso alle risorse del sistema. I processi sono protetti l'uno dall'altro da &os2;, che impedisce loro di accedere alle aree di memoria assegnate agli altri ("memory protection").
I sottoprocessi all'interno di un processo, invece, possono condividere la sua memoria; il sistema, infatti, la assegna basandosi sui singoli processi. La stessa cosa vale per le altre risorse del sistema, ad esempio i file aperti.
Per riepilogare, il sottoprocesso Š il concetto usato nel kernel di &os2; per gestire la propriet… della CPU. Il processo, invece, Š il concetto usato per gestire la propriet… di ogni altra cosa: file, dispositivi e memoria.
Per ulteriori informazioni si vedano gli argomenti seguenti: