Sistemi operativi "utili"

A seconda della particolare applicazione che si intende affrontare, le due funzioni fondamentali di

che abbiamo considerato definiscano un sistema operativo, possono essere svolte compiendo un certo numero di scelte pratiche, che si riflettono in vari modi di classificare il sistema operativo stesso.

Sistema operativo monoprocesso Sistema operativo multiprocesso
Il sistema operativo è sostanzialmente un grande "programma", che viene eseguito dall'inizio alla fine, e comprende nel proprio flusso di esecuzione tutti i casi che si possono presentare. Il sistema operativo è in grado di controllare vari processi indipendenti, e di passare dall'uno all'altro, eventualmente spostando dalla memoria fisica alla memoria di massa (disco) i processi inattivi (swap). Questo permette di ridurre il tempo in cui la CPU rimane inattiva a causa dell'attesa della disponibilità delle periferiche. Questa capacità si chiama anche multiprogrammabilità. Può essere utile organizzare una singola applicazione in processi distinti.

Sistema operativo monoutente Sistema operativo multiutente
Il sistema operativo non è in grado di distinguere l'appartenenza di file, parti di memoria e processi a diversi utenti. Non è quindi in grado di esercitare alcun tipo di protezione. Esiste un meccanismo di identificazione che associa ad un particolare utente del sistema i suoi processi (con il relativo spazio di memoria), i suoi file, e li protegge dall'interferenza degli altri utenti. Le funzioni di amministrazione vengono ulteriormente ristrette ad un particolare utente privilegiato (superuser). La protezione ed identificazione si può organizzare su un ulteriore livello attraverso la creazione di gruppi di utenti.

Sistema operativo monolitico Sistema operativo stratificato
Il codice del sistema operativo può accedere qualunque parte di se stesso. Non vi è protezione fisica della memoria, nè gerarchia fra le varie attività del sistema operativo. E' implementata una gerarchia di funzioni del codice, a partire dalla interazione diretta con l'hardware e via via con livelli di astrazione crescenti. L'area di memoria utilizzata dalle funzioni di più basso livello viene fisicamente protetta dall'accesso da parte delle funzioni più astratte.

Sistema operativo a memoria fisica Sistema operativo a memoria virtuale
Il sistema operativo accede direttamente allo spazio di indirizzi di memoria fisici. I programmi che vengono eseguiti debbono avere una dimensione massima pari alla memoria fisica disponibile. Sistemi di questo tipo, che permettono una programmazione più diretta delle periferiche collegate, e quindi un controllo più accurato dei tempi di risposta, si chiamano anche sistemi operativi in tempo reale. Il sistema è in grado di gestire processi che accedono ad uno spazio di memoria in linea di principio arbitrario, ed anche molto più grande della memoria fisica disponibile. Gli indirizzi di accesso alla memoria subiscono un (ottimizzato) processo di traduzione. Le parti (pagine) che eccedono la memoria libera disponibile vengono copiate su una memoria di massa (disco), e richiamate se necessario.

Sistema operativo senza supporto nativo di rete Sistema operativo con supporto nativo di rete
Non sono presenti chiamate di sistema che si occupino direttamente della comunicazione con CPU remote. Il sistema non si occupa della gestione delle eventuali interfacce di rete, che deve essere eventualmente affidata a processi a livello utente. Il sistema è in grado di gestire le interfacce di rete e comprende (a livello di sistema/kernel) il software necessario per la comunicazione con altre macchine. Se il sistema è stato progettato fin dall'inizio comprendendo il supporto per applicazioni distribuite/collaborative si definisce sistema operativo di rete.

Sistema operativo monoprocessore Sistema operativo multiprocessore
Il sistema operativo è in grado di controllare e gestire il funzionamento di un solo microprocessore/CPU. Il sistema operativo è in grado di coordinare l'esecuzione dei processi su più CPU contemporaneamente.

I sistemi operativi che si prestano ad applicazioni collaborative di carattere generale, all'uso protetto da parte di utenti diversi, e che presentano anche una buona stabilità di funzionamento e resistenza agli errori di programmazione da parte degli utenti, sono dunque i

sistemi operativi multiprocesso, multiutente, stratificati, a memoria virtuale e con supporto nativo di rete.

Questi sono i sistemi operativi "utili", che trovano svariate applicazioni nell'ambito della ricerca scientifica.
Se aggiungiamo i requisiti di una elevata diffusione, e di una aspettativa di vita superiore ai 5 anni, nel mondo reale rimangono solo UNIX e Windows NT/2000/XP/...?.