sistema operativo
pagina
iniziale
In informatica il sistema operativo (abbreviato spesso nel
suo acronimo SO, o all'inglese OS, operating system) è l'insieme di routine e
strutture dati responsabile del controllo e della gestione dei componenti
hardware che costituiscono un computer e dei programmi che su di esso vengono
eseguiti. Il sistema operativo mette anche a disposizione dell'utente una
interfaccia software (grafica o testuale) per accedere alle risorse hardware
(dischi, memoria, I/O in generale) del sistema.
Il compito principale del sistema operativo è quello di permettere all'utente,
umano o non, di interagire direttamente con la macchina.
Struttura
Un generico sistema operativo moderno si compone di alcune parti standard, più o meno ben definite.
- Il kernel: un gruppo di funzioni fondamentali,
strettamente interconnesse fra loro e con l'hardware, che vengono eseguite con
il privilegio massimo disponibile sulla macchina ossia in modalità kernel; il
kernel fornisce le funzionalità di base per tutte le altre componenti del
sistema operativo, che assolvono le loro funzioni servendosi dei servizi che
esso offre. A seconda del tipo di sistema operativo il kernel può inglobare
altre parti (kernel classico, monolitico o modulare) o fornire solo funzioni
base delegando più funzioni possibile a oggetti/gestori esterni (microkernel).
- Il gestore di file system: si occupa di esaudire
le richieste di accesso alle memorie di massa. Viene utilizzato ogni volta che
si accede a un file su disco, e oltre a fornire i dati richiesti tiene traccia
dei file aperti, dei permessi di accesso ai file. Inoltre si occupa anche e
soprattutto dell'astrazione logica dei dati memorizzati sul computer (directory,
ecc).
- Un gestore di memoria virtuale, che alloca la
memoria richiesta dai programmi e dal sistema operativo stesso, salva sulla
memoria di massa le zone di memoria temporaneamente non usate dai programmi e
garantisce che le pagine swappate vengano riportate in memoria se richieste.
- Uno scheduler che scandisce il tempo di
esecuzione dei vari processi e assicura che ciascuno di essi venga eseguito per
il tempo richiesto. Normalmente lo scheduler gestisce anche lo stato dei
processi e può sospenderne l'esecuzione nel caso questi siano in attesa senza
fare nulla (esempio classico è la richiesta di dati da disco). Nei sistemi
operativi realtime lo scheduler si occupa anche di garantire una timeline, cioè
un tempo massimo di completamento per ciascun task in esecuzione, ed è
notevolmente più complesso.
- Uno spooler che riceve dai programmi i dati da
stampare e li stampa in successione, permettendo ai programmi di proseguire
senza dover attendere la fine del processo di stampa.
- Una interfaccia utente (shell o GUI) che permette agli esseri umani di
interagire con la macchina.
A seconda dei casi, un particolare sistema operativo può avere tutti questi
componenti o solo alcuni. Una ulteriore differenza fra i sistemi operativi è
data dal tipo di comunicazione fra le varie componenti: i sistemi operativi
classici sono basati su chiamate dirette di funzioni, mentre molti sistemi
operativi moderni, soprattutto quelli che adottano microkernel, si basano sul
message passing, sullo scambio di messaggi fra le loro varie parti e fra il
sistema operativo e i programmi che fa girare.