Affinché un computer sia in grado di far funzionare un programma informatico (detto talvolta applicazione o software), il terminale deve essere capace di effettuare un certo numero di operazioni preparatorie per assicurare gli scambi tra il processore, la memoria, e le risorse hardware (periferiche).
Il Sistema operativo (sigl SO o OS , abbreviazione del temine inglese Operating System), è incaricato di assicurare il collegamento tra le risorse software, l'utente e le applicazioni (trattamento di testi, giochi video,...). Così, quando un programma vuole accedere ad una risorsa hardware, non è necessario che invii delle informazioni specifiche alla periferica, ma gli basterà inviare le informazioni al sistema operativo, che si occuperà di trasmetterle alla periferica interessata attraverso il suo driver. In assenza dei driver, bisognerà la ogni programma riconosca e accetti la comunicazione con ogni tipo di periferica!

Il sistema operativo permette quindi di "dissociare" i programmi e l'hardware, soprattutto per semplificare la gestione delle risorse e offrire all'utente un'interfaccia uomo-terminale semplificata per permettergli di liberarsi della complessità del terminale hardware.
I ruoli del sistema operativo sono diversi :
Il sistema operativo è composto da un insieme di software che permettono di gestire le interazioni con l'hardware. In questo gruppo si distinguono generalmente i seguenti elementi :
Un sistema operativo è detto «multitask» (in inglese multithreaded) quando più «operazioni» (detti anche processi) possono essere eseguiti simultaneamente.
Le applicazioni sono composte come una sequenza di istruzioni detta «processi leggeri» (in inglese «threads»). Questi threads saranno attivi a turno, in attesa, sospesi o distrutti, secondo la priorità che è loro associata oppure eseguiti progressivamente.
Un sistema è detto preemptive quando ha un comandante (detto anche pianificatore) che ripartisce, seguendo dei criteri di priorità, il termpo terminale tra i diversi processi che lo richiedono.
Il sistema è detto a tempo condiviso quando una quota di tempo è destinata ad ogni processo dal comandante. E' esattamente il caso dei sistemi multiutenti che permettono a più utenti di usare simultaneamente su uno stesso terminale delle applicazioni differenti oppure simili: il sistema è allora detto «sistema transazionale». Il sistema quindi assegna ad ogni utente un intervallo di tempo.
Il multiprocessing è una tecnica che consiste nel far funzionare più processori in parallelo per ottenere una maggiore potenza di calcolo rispetto a quella ottenibile con un processore d'alta qualità oppure per aumentare la disponibilità del sistema (in caso di guasto di un processore).
Viene detto SMP (Symmetric Multiprocessing o Symmetric Multiprocessor) un'architettura in cui tutti i processori accedono ad uno spazio memoria condiviso.
Un sistema multiprocessore deve quindi essere capace di gestire la condivisione della memoria tra più processore ma anche distribuire il carico di lavoro.
I Sistemi imbarcati sono dei sistemi operativi previsti per funzionare su terminali di piccole dimensioni, come i PDA (personal digital assistants ou en français assistants numériques personnels) o delle apparecchiature elettroniche autonome (sonde spaziali, robot, computer di bordo di veicoli, ecc.), con un autonomia ridotta. Caratteristica essenziale dei sistemi imbarcati è la loro gestione avanzata dell'energia e la loro capacità di funzionare con delle risorse limitate.
I principali sistemi imbarcati «grande distribuzione» per PDA sono :
I sistemi in tempo reale (real time systems), essenzialmente usati nell'industria, sono dei sistemi il cui obiettivo è di funzionare in un ambiente con limiti temporali. Un sistema in tempo reale deve quindi funzionare in modo affidabile secondo limiti temporali specifici, cioè deve essere in grado i consegnare un corretto trattamento delle informazioni ricevute ad intervalli di tempo definiti (regolari o meno).
Ecco alcuni esempi di sistemi operativi in tempo reale :
Si distinguono molteplici tipi di sistemi operativi, secondo la loro capacità di gestire contemporaneamente delle informazioni di una lunghezza di 16 bits, 32 bits, 64 bits o più.
| Sistema | Codifica | Monoutente | Multiutente | Monotask | Multitask |
|---|---|---|---|---|---|
| DOS | 16 bits | X | X | ||
| Windows3.1 | 16/32 bits | X | non preemptive | ||
| Windows95/98/Me | 32 bits | X | cooperativo | ||
| WindowsNT/2000 | 32 bits | X | préemptif | ||
| WindowsXP | 32/64 bits | X | preemptive | ||
| Unix / Linux | 32/64 bits | X | preemtive | ||
| MAC/OS X | 32 bits | X | preemtive | ||
| VMS | 32 bits | X | preemptive |