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 (sigla 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, ecc.). 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:
Gestione del processore, il sistema operativo è incaricato di gestire la distribuzione del processore tra i diversi programmi mediante un algoritmo di comando. Il tipo di comando dipende totalmente dal sistema operativo, secondo l'obiettivo desiderato;
Gestione della memoria RAM, il sistema operativo è incaricato di gestire lo spazio di memoria distribuito ad ogni applicazione e, se necessario, ad ogni utente. In caso di memoria hardware insufficiente, il sistema operativo può creare una zona di memoria sul disco rigido, detta «memoria virtuale». La memoria virtuale permette di far funzionare delle applicazioni che necessitano di più memoria di quanta non sia disponibile nella memoria viva del sistema. Dall'altro lato, questa memoria è molto più lenta;
Gestione delle entrate/uscite, il sistema operativo permette di unificare e di controllare l'accesso dei programmi alle risorse hardware attraverso dei driver (detti anche gestionari di periferiche o gestionari di entrata/uscita);
Gestione degli eseguibili delle applicazioni, il sistema operativo è incaricato della corretta esecuzione delle applicazioni attribuendo loro le risorse necessarie al buon funzionamento. A questo titolo, esso permette di «eliminare» un'applicazione che non risponde più correttamente;
Gestione dei diritti, il sistema operativo è incaricato della sicurezza legata all'esecuzione dei programmi garantendo che le risorse sono utilizzate solo dai programmi e che utenti hanno i diritti appropriati;
Gestione dei file, il sistema operativo gestisce la lettura e la scrittura nel sistema dei file e i diritti di accesso ai file per gli utenti e le applicazioni;
Gestione delle informazioni,il sistema operativo fornisce un certo numero di indicatori che permettono di diagnosticare il corretto funzionamento del terminale.
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:
Il nucleo (in inglese kernel) che rappresenta le funzioni fondamentali del sistema operativo come la gestione della memoria, dei processi, dei file, delle entrate/uscite principali e delle funzionalità di comunicazione;
L'interprete di comando (in inglese shell, tradotto «conchiglia» in opposizione a nucleo) che permette la comunicazione con il sistema operativo mediante un linguaggio di comandi, affinché l'utente possa pilotare le periferiche ignorando tutta una serie di caratteristiche hardware che utilizza, dalla gestione degli indirizzi hardware, ecc.
Il sistema di file (in inglese «file system», sigla FS), che permette di salvare i file in un'arborescenza.
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 tempo 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. È esattamente il caso dei sistemi multi-utenti 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 e in francese 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: PalmOS; Windows CE/Windows Mobile/Window smartphone.
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:
OS-9;
RTLinux (RealTime Linux);
QNX;
Si distinguono molteplici tipi di sistemi operativi, secondo la loro capacità di gestire contemporaneamente delle informazioni di una lunghezza di 16 bit, 32 bit, 64 bit o più:
Sistema | Codifica | Monoutente | Multiutente | Monotask | Multitask |
---|---|---|---|---|---|
DOS | 16 bit | X | X | ||
Windows3.1 | 16/32 bit | X | non preemptive | ||
Windows95/98/Me | 32 bit | X | cooperativo | ||
WindowsNT/2000 | 32 bit | X | preemptive | ||
WindowsXP | 32/64 bit | X | preemptive | ||
Unix / Linux | 32/64 bit | X | preemptive | ||
MAC/OS X | 32 bit | X | preemptive | ||
VMS | 32 bit | X | preemptive |
Foto: © Pixabay.