Corso di Sistemi Operativi

Modelli di sistemi operativi - Parte I

 

Nelle scorse lezioni abbiamo focalizzato i requisiti che vengono richiesti a tutti i sistemi operativi, accennando alla possibilità che ogni SO adotti soluzioni diverse per rispondere alla stessa esigenza.
Come avviene in genere in tutti i campi dell’attività umana, spesso non esiste una sola soluzione ad uno stesso problema e la stessa cosa può essere fatta in modi diversi, secondo i gusti e le esperienze di chi si accinge a soddisfare una determinata richiesta.
Naturalmente ogni soluzione ha i suoi pro e contro, ed ognuno sceglie di adottare quella che più gli aggrada o ritiene migliore (dacché spesso accade che il concetto di “migliore” cada nella categoria dell’opinabile).

Nel campo dell’informatica sono stati fatti passi da gigante, sia nella realizzazione dell’hardware che nello sviluppo del software, e la progettazione di sistemi operativi si è avvalsa dell’esperienza accumulata, portando a diversificare non solo le soluzioni adottate per i problemi classici del controllo e della gestione dei sistemi di calcolo, ma modificando l’approccio stesso al problema.

Generalmente le funzioni riguardanti la gestione dei processi, la loro cooperazione e la gestione del processore vengono incorporate nel kernel del SO, che spesso viene supportato dall’hardware per la gestione di altri moduli, come la MMU per la paginazione della memoria.
Tuttavia è possibile organizzare un SO seguendo approcci differenti che ne influenzano le caratteristiche fondamentali.

A partire da questa lezione vedremo un insieme eterogeneo di modelli implementativi per i sistemi operativi, che possiamo riassumere nelle seguenti categorie:
1) modelli monolitici;
2) modelli a strati;
3) modelli a microkernel;
4) modelli a macchine virtuali.

Di questi esamineremo le differenze secondo quattro aspetti:
- modularità
- portabilità
- protezione
- efficienza

La modularità è la possibilità di progettare e verificare i moduli del sistema indipendentemente gli uni dagli altri, con vantaggi in termini di flessibiltà e brevità dei tempi di realizzazione.
La portabilità è la possibilità di implementare le politiche attuate dal sistema indipendentemente dalla piattaforma sul quale viene realizzato.
La protezione è la capacità del sistema di controllare gli accessi alle risorse, al fine di garantire la non interferenza e l’equità nel loro utilizzo.
L’efficienza è la capacità di ottimizzare l’utilizzo delle risorse del sistema, al fine di migliorare le prestazioni globali (tempo di risposta, throughput, banda di elaborazione, etc.).
Talvolta qualcuno di questi aspetti può entrare in conflitto con gli altri e il compito di valutare quale sia la caratteristica da preferire in una certa condizione può essere arduo e, in genere, non conduce ad un giudizio generalizzabile.

I modelli monolitici sono caratterizzati dall’assenza di struttura: il SO è costituito da una collezione di procedure, ciascuna delle quali può richiamarne una qualsiasi altra ogni qualvolta ne ha bisogno.
Ogni procedura del sistema ha un’interfaccia ben definita in termini di parametri e di valori restituiti, ma non esiste una gerarchia e non esistono meccanismi di mascheramento dell’informazione (information hiding).
In questi modelli, kernel e SO coincidono; portabilità, modularità e protezione sono molto limitate e si cerca di privilegiare l’efficienza.
Un esempio di SO monolitico è MS-DOS.

Comunque, persino nei sistemi monolitici di può avere un minimo di strutturazione delle funzioni, come avviene ad es. in UNIX, che le suddivide fondamentalmente in tre parti:
- un’interfaccia per le chiamate di sistema utilizzabili dai programmi utente, in grado di riconoscere e invocare le procedure del kernel corrispondenti;
- un insieme di procedure di servizio che si occupano di eseguire le operazioni specificate dalle chiamate di sistema;
- un insieme di procedure di utilità richiamate dalle procedure di servizio per la gestione delle risorse utilizzate nelle chiamate di sistema.
Questa strutturazione permette di migliorare la modularità e la portabilità del sistema, tuttavia nella prossima lezione vedremo come una gerarchizzazione eccessiva delle funzioni sia sconsigliabile.

 

Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet