IL SISTEMA OPERATIVO
Last updated
Last updated
Il sistema operativo è la componente software fondamentale di un sistema di elaborazione. Esso è formato da un insieme di programmi che interagiscono e cooperano per realizzare due obiettivi fondamentali:
gestire efficientemente l'elaboratore e le sue periferiche;
creare un ambiente virtuale che rende la macchina più facilmente utilizzabile all'utente.
Dal punto di vista strutturale il sistema operativo è formato da un insieme di livello (struttura a cipolla); ogni livello fornisce un insieme di funzioni e servizi a partire da funzioni e servizi forniti dai livelli sottostanti (si veda la figura 1). I livelli più bassi (in particolare, il più basso, detto "kernel") sono quelli più vicini all'hardware e quindi dipendono dalla specifica macchina (tali livelli sono spesso sviluppati in linguaggio macchina); i livelli più alti, che sono quelli più vicini agli utenti e ai programmi applicativi, sono spesso sviluppati in linguaggi ad alto livello (ad esempio in linguaggio "C") e sono abbastanza indipendenti dalle caratteristiche hardware della macchina.
Ad esempio, è oggi molto comune, su elaboratori anche di tipo differente (personal, workstation, mini, ...), il sistema operativo Linux. Per ogni macchina vi è un diverso kernel Linux mentre i livelli alti sono uguali (o molto simili) per cui gli utenti interagiscono uniformemente con le varie macchine.
La descrizione delle caratteristiche dei sistemi operativi nel seguito sarà fatta secondo uno schema funzionale: in altri termini. verranno analizzate le più importanti funzioni di tali sistemi, discutendo come esse possano essere realizzate ed analizzandone le interazioni. Le funzioni fondamentali su cui concentreremo l'attenzione sono:
avviamento dell'elaboratore e creazione dell'ambiente virtuale;
gestione del processore e dei processi;
gestione della memoria principale;
gestione della memoria virtuale;
gestione della memoria secondaria: il file system;
linguaggio di comandi per l'interazione con l'utente;
gestione delle risorse e periferiche; in particolare, gestione dell'Input/Output.
L'obiettivo è quello di dare una descrizione astratta e intuitiva della struttura e funzione del sistema, evitando i dettagli.
Nei computer moderni il sistema operativo viene mandato in esecuzione al momento dell'accensione della macchina (tale fase prende il nome di "bootstrap") e prende quindi immediatamente il controllo dell'elaboratore. Vi è, quindi, una parte del sistema (un insieme di programmi e un insieme di dati) che viene caricato immediatamente in memoria principale. Quale sia più precisamente tale insieme di programmi e dati dipende dalle caratteristiche del sistema operativo; in prima approssimazione si può pensare che vengano caricati i seguenti programmi:
programmi per la gestione dei processi e del processore;
programmi per la gestione della memoria;
programmi per la gestione delle periferiche e dell'Input/Output;
programmi per la gestione del file system;
un programma che crea l'interfaccia verso l'utente ossia che fornisce all'utente un linguaggio di comandi per l'interazione con il sistema . In particolare viene di solito caricato in memoria un programma in grado di riconoscere i comandi dell'utente e di fare intraprendere al sistema le azioni opportune in corrispondenza di ogni comando.
Ciò comporta che una parte del sistema operativo sia sempre mantenuta in memoria principale e sia potenzialmente sempre pronta ad eseguire. Questo significa che parte della memoria principale dovrà essere dedicata a mantenere programmi e dati riguardanti il sistema operativo. Risulterà chiaro più avanti come ciò sia effettivamente possibile.