In generale, un sottoprocesso con una priorit… pi— alta ottiene maggior tempo di elaborazione di uno con priorita pi— bassa. Per la precisione, &os2; tiene conto della priorit… dei sottoprocessi solo se ve n'Š pi— di uno contrassegnato internamente come "pronto". Infatti, i sottoprocessi in stato "bloccato" non potrebbero comunque usufruire della CPU, perci• la loro priorit… viene ignorata finch‚ non si sbloccano. Si tenga presente che, in un sistema &os2; normale, la maggior parte dei sottoprocessi Š abitualmente in stato "bloccato".

&os2; controlla la priorit… dei sottoprocessi in maniera estremamente raffinata, differenziandola in quattro classi di priorit…:

  1. La priorit… "Idle time" ("momenti di inattivit…") (1) Š la pi— bassa tra le classi di priorit…: un sottoprocesso ottiene accesso al processore solo se nessun altro sottoprocesso con classe di priorit… superiore Š attivo. I sottoprocessi di questa classe sono utili per sbrigare lavori che non vanno svolti con urgenza, per i quali si pu• quindi aspettare che si liberi il processore.

  2. La priorit… "Regular" ("normale") (2) Š la classe cui appartengono la maggior parte dei sottoprocessi. E' anche la classe di priorit… assunta da &os2; se un sottoprocesso non specifica altrimenti la propria classe. &os2; varia dinamicamente il livello di priorit… tra i sottoprocessi appartenenti a questa classe (una spiegazione pi— dettagliata segue sotto), per garantire che nessun sottoprocesso "muoia di fame", non ricevendo mai tempo di elaborazione.

  3. La priorit… "Foreground server ("server in primo piano")" (4) Š la seconda classe di priorit… pi— alta; vi appartengono sottoprocessi che non devono essere influenzati dalle variazioni di priorit… dinamiche cui sono sottoposti i sottoprocessi "regular". Anche se il valore di questa classe Š 4, i sottoprocessi "time-critical" hanno la priorit… rispetto a quelli di questa classe. &os2; comunque modifica ulteriormente la priorit… di questi sottoprocessi a seconda della loro attivit… effettiva e dell'attivit… del sistema.

  4. La priorit… "Time-critical ("critico")" (3) Š la classe di priorit… pi— alta prevista in &os2;. I sottoprocessi appartenenti a questa classe ricevono istantaneamente tempo di calcolo del processore e non vengono interrotti finch‚ il loro compito non Š ultimato. La maggior parte dei programmi di controllo (driver) usano la CPU attraverso sottoprocessi di questa classe, che, proprio perch‚ non possono essere interrotti se non da altri sottoprocessi "time-critical", devono usare la CPU per il minor tempo possibile; in caso contrario potrebbero facilmente bloccare il sistema. Anche se la CPU viene rilasciata con DosSleep(0) (si vedano le informazioni relative a DosSleep nella documentazione del Toolkit*), gli altri sottoprocessi "non-time-critical" non la possono sfruttare. Questa classe di priorit… Š perci• normalmente usata solo per per programmi di rete e di comunicazione in genere, o per i masterizzatori CD e applicazioni multimediali.
All'interno di ciascuna classe di priorit…, un sottoprocesso pu• impostare un livello di priorit…. Si tratta di un valore variabile tra 0 to +31 che determina la precedenza di un sottoprocesso all'interno della classe di priorit… e che viene preso in considerazione solo se vi sono due sottoprocessi concorrenti nella stessa classe di priorit….

Alcuni esempi: