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 dellattività 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 dellopinabile).
Nel campo dellinformatica sono stati fatti passi da gigante,
sia nella realizzazione dellhardware che nello sviluppo
del software, e la progettazione di sistemi operativi si è avvalsa
dellesperienza accumulata, portando a diversificare non
solo le soluzioni adottate per i problemi classici del controllo
e della gestione dei sistemi di calcolo, ma modificando lapproccio
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 dallhardware
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 lequità nel loro utilizzo.
Lefficienza è la capacità di ottimizzare lutilizzo
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 dallassenza
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 uninterfaccia ben definita
in termini di parametri e di valori restituiti, ma non esiste
una gerarchia e non esistono meccanismi di mascheramento dellinformazione
(information hiding).
In questi modelli, kernel e SO coincidono; portabilità, modularità
e protezione sono molto limitate e si cerca di privilegiare lefficienza.
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:
- uninterfaccia 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