Sei sulla pagina 1di 16

Sistemi Operativi

2. Strutture dei Sistemi Operativi

2.1 Servizi di un Sistema Operativo


La progettazione di un Sistema Operativo è un’operazione complessa che prevede una serie di
funzionalità che hanno il compito di facilitare la comunicazione tra l’utente e la macchina.
I principali servizi che un Sistema Operativo offre sono i seguenti:

 INTERFACCIA UTENTE
Per facilitare l’utilizzo del Sistema di Calcolo, il Sistema Operativo fornisce un interfaccia che si può
presentare in diversi modi:
- Fino a qualche tempo fa l’interfaccia utilizzata era il CLI (Common Level Interface) e prevedeva
l’utilizzo di stringhe che codificano i comandi inseriti dall’utente tramite una console.
- Attualmente si utilizzano interfacce denominate GUI (Graphical User Interface) che permettono
all’utente, tramite l’utilizzo di finestre, bottoni, menu e quant’altro correlati ad un puntatore
(mouse) che ne regola lo stato, di comandare le operazioni di INPUT/OUTPUT ed espletare i
servizi forniti dal Sistema Operativo.

 ESECUZIONE DI UN PROGRAMMA
Il Sistema Operativo deve poter eseguire e terminare un programma.

 OPERAZIONI DI INPUT/OUTPUT
Il Sistema Operativo deve controllare le operazioni di I/O richieste da un programma in modo da
rendere efficiente e protetto i dispositivi relativi e lo stesso Sistema Operativo. Infatti, solitamente,
l’utente non può controllare i dispositivi I/O e il Sistema Operativo tramite l’utilizzo di driver fa da
tramite.

 GESTIONE DEL FILESYSTEM


Il Sistema Operativo deve rendere possibili le operazioni di creazione, rimozione, modifica e ricerca
dei file sia all’utente che ad un generico programma in esecuzione. Inoltre deve controllare le
autorizzazioni che hanno gli utenti e i programmi agli stessi file per poterne controllare
un’eventuale autenticazione.

Lisandro Francesco Pagina 1 18/04/2011


Sistemi Operativi

 COMUNICAZIONE TRA I PROCESSI


Il Sistema Operativo deve rendere possibile la comunicazione tra i processi in esecuzione sia che
essi siano sulla stessa macchina sia che siano dislocati in macchine diverse.

 RILEVAMENTO DEGLI ERRORI


Il Sistema Operativo deve essere in grado di rilevare gli errori sulla Memoria Centrale, sulla CPU, sui
dispositivi I/O e su qualsiasi forma di hardware presente. Inoltre deve essere in grado di gestire gli
errori derivati dai programmi. In entrambi i casi deve comunicare l’accaduto all’utente tramite
l’interfaccia.

 ASSEGNAZIONE DELLE RISORSE AI PROCESSI CONCORRENTI


Il Sistema Operativo deve determinare a chi assegnare le risorse in caso di processi concorrenti
(anche un modem, una stampante e driver possono essere processi in esecuzione) che tentano
l’accesso alle stesse risorse. Il Sistema Operativo attua procedure di scheduling della CPU per
portare a termine l’assegnazione delle risorse.

 CONTABILIZZAZIONE DELL’USO DELLE RISORSE


Il Sistema Operativo deve registrare gli utenti e i loro accessi alle risorse. Tutto ciò è necessario per
contabilizzare le risorse, per distribuire il costo agli utenti, per effettuare statistiche e per migliorare
i servizi di calcolo.

 PROTEZIONE E SICUREZZA
Il Sistema Operativo deve essere in grado di controllare le informazioni da accessi non autorizzati
ed inoltre la protezione riguarda anche le errate esecuzioni di processi che potrebbero danneggiare
il Sistema Operativo.

Lisandro Francesco Pagina 2 18/04/2011


Sistemi Operativi

2.2 Interfaccia con l’utente del Sistema Operativo


Esistono due modi fondamentali per gli utenti per comunicare con il Sistema Operativo e sono i
seguenti:

 INTERPRETE DEI COMANDI


Molto spesso l’interprete dei comandi è compreso nel Sistema Operativo. Esso solitamente si
innesca all’avvio di un processo per la prima volta. Se un Sistema Operativo prevede la presenza
di più interpreti di comandi, gli stessi vengono definiti shell. Ogni shell ha solitamente le
medesime funzionalità con l’unica differenza che sono implementate in diverse tipologie di
codice e quindi le chiamate predefinite e non che l’utente può effettuare hanno una sintassi
diversa.
L’interprete dei comandi deve solamente prelevare ed eseguire il comando impartito
dall’utente. Per farlo si possono utilizzare comandi predefiniti (es: per la cancellazione, la
creazione e la visualizzazione di file) che l’interprete dei comandi già conosce perché sono
presenti nel suo codice.
In altri casi si possono utilizzare comandi speciali che richiamano particolare programmi
presenti nel sistema che eseguono un determinato processo in un determinato modo
selezionato.
Ad esempio digitando in un sistema UNIX il comando “rm file.txt” l’interprete cercherà un
file chiamato “rm” e gli attribuirà il parametro “file.txt”. Successivamente “rm” verrà
caricato in Memoria Centrale e verrà eseguito in base alla sua funzione che è definita nel file
stesso.

 INTERFACCIA GRAFICA CON L’UTENTE


Si tratta di uno strumento molto più intuitivo dell’interfaccia a riga di comando in quanto grazie
all’uso di finestre e di un desktop contenente icone si ricrea una “scrivania” dove
all’interno della stessa le icone rappresentano i file, i programmi, le directory e le funzioni
del sistema. L’accesso a tutte queste funzionalità è dato solitamente dall’utilizzo di un mouse
che fa da puntatore.
I primi sistemi ad interfaccia GUI sono stati prodotti dalla Xerox nel 1973, successivamente
Macintosh, Windows e Unix l’hanno adottato a proprio piacimento.

Lisandro Francesco Pagina 3 18/04/2011


Sistemi Operativi

2.3 Chiamate di Sistema


Quando un processo in esecuzione vuole comunicare con il Sistema lo fa tramite le Chiamate di
Sistema o System Call.
Le Chiamate di Sistema sono spesso disponibili come routine scritte in C, C++ e servono a
svolgere compiti all’apparenza banali. Un esempio tipico di funzione di una chiamata di sistema è la
copia di un file esistente in un altro file dislocato nel disco.

Per farlo il ciclo esecutivo si presenta nel seguente modo:


 Acquisizione del nome del file di ingresso
1. Scrittura del messaggio di richiesta sullo schermo
2. Accettazione dei dati in ingresso relativamente al percorso
 Acquisizione del nome del file di uscita
1. Scrittura del messaggio di richiesta sullo schermo
2. Accettazione dei dati in uscita relativamente al percorso
 Apertura del file di ingresso
1. Se il file non esiste termina e stampa un errore, altrimenti direttamente al punto 3
2. Richiede l’operazione
3. Se il file esiste legge i dati dal file di ingresso
 Creazione del file di uscita
1. Se il file è già esistente termina e stampa con un errore, altrimenti direttamente al punto 3
2. Richiede l’operazione
3. Se il file non esiste scrive i dati letti sul file di uscita
 Chiusura del file di ingesso a fine lettura
 Scrittura del messaggio di conferma

Tra queste operazioni ci sono una moltitudine di chiamate di sistema: alcune che servono a
controllare anche altre tipologie di errore ( spazio su disco insufficiente, errore nella scrittura del
file) ed altre che effettuano operazioni intermedie necessarie.
Lo scopo di quest’esempio è chiaro: anche operazioni semplici prevedono un uso costante del
Sistema Operativo.

Lisandro Francesco Pagina 4 18/04/2011


Sistemi Operativi

I programmatori per richiamare le System Call hanno uno strumento intermedio chiamato API
(Application Programming Interfaces) che consiste in librerie che facilitano questa serie di compiti
rognosi offrendo un’insieme di funzioni e procedure comuni.
Tra le interfacce più diffuse troviamo la API Win32 per i sistemi Windows, POSIX per Unix, Linux e
Mac e le API per Java eseguite su una macchina virtuale.
Un esempio di funzione è la funzione createProcess() di Win32 che serve a generare un
nuovo processo ed invoca il metodo NTCreateProcess() che è una System Call.
Per leggere un file in Sistemi Windows utilizzando le API di Win32 avremo un metodo:

readFile(HANDLE file, LPVOID buffer,DWORD bytesToRead,


LPDWORD bytesRead, LPOVERLAPPED ovl)

Dove, come parametri, avremo un file da cui leggere (HANDLE file), un buffer da cui leggere I
dati che provengono dal file (LPVOID buffer), il numero di byte da trasferire dal file al buffer
(DWORD bytesToRead), il numero di byte che sono già stati letti fino a quel momento (LPWORD
bytesRead) e un indicatore che evidenzia l’uso dello spooling (LPOVERLAPPED ovl).

ACCESSO ALLE SYSTEM CALL


Solitamente l’insieme di funzioni e procedure (supporto all’esecuzione chiamato run-time support
system) per richiamare le System Call sono gestite e contenute dal Compilatore del linguaggio di
programmazione che rappresenta un interfaccia tra il linguaggio (API) e il Sistema. Quando arriva
una chiamata dall’API il compilatore la intercetta e richiede effettivamente questa chiamata in base
ad un indice che la rappresenta.
Il programmatore ha solo una conoscenza dell’API e tutti questi dettagli implementativi non gli
interessano.

COME AVVIENE IL PASSAGGIO DEI PARAMETRI NELLE SYSTEM CALL


Spesso per poter effettuare una chiamata di Sistema è necessario passare alla stessa un insieme di
parametri. Ci sono tre possibili soluzioni:

Lisandro Francesco Pagina 5 18/04/2011


Sistemi Operativi

 Passare i parametri nei registri


In questo caso è possibile che il numero di parametri superi quello dei registri a disposizione e
quindi risulta necessario utilizzare il secondo approccio.
 Memorizzare i parametri in un blocco o tabella di memoria
In questo caso si memorizzano i parametri in un blocco o in una tabella di memoria e
successivamente si passa l’indirizzo del blocco come parametro.
 Memorizzare i parametri in una pila o stack
Tramite un operazione definita push vengono inseriti i parametri in uno stack (Sono strutture
dati le cui modalità d'accesso seguono una politica LIFO (Last In First Out), ovvero tale per cui i dati
vengono estratti (letti) in ordine rigorosamente inverso rispetto a quello in cui sono stati inseriti
(scritti). Il nome di questa struttura dati è infatti la stessa parola inglese usata, per esempio, per
indicare una "pila di piatti" o una "pila di giornali", e sottende per l'appunto l'idea che quando si
pone un piatto nella pila lo si metta in cima, e che quando si preleva un piatto si prelevi,
analogamente, quello in cima (da cui la dinamica LIFO), anche se è possibile inserire o prelevare
elementi anche dalla coda, infatti più in generale la pila è un particolare tipo di lista in cui le
operazioni di inserimento ed estrazione si compiono dallo stesso estremo.) che successivamente
vengono letti dal Sistema Operativo tramite un’operazione definita pop.

2.4 Categorie di System Call


Possiamo classificare le System Call in cinque tipologie diverse in base al controllo alle stesse
attribuito:

 System Call per il Controllo dei Processi


 System Call per la Gestione dei File
 System Call per la Gestione dei Dispositivi
 System Call per la Gestione delle Informazioni
 System Call per la Gestione delle Comunicazioni

Lisandro Francesco Pagina 6 18/04/2011


Sistemi Operativi

2.5 System Call – Controllo dei Processi


Le chiamate di Sistema servono per controllare anche l’esecuzione dei processi. Infatti hanno le
seguenti operazioni necessarie per lo scopo:

TERMINAZIONE NORMALE ED ANORMALE


 end
Serve per terminare in modo normale un programma in esecuzione.

 abort
Serve per terminare in modo anomalo un programma. Avviene quando il programma non è
stato eseguito correttamente in base alle politiche del Sistema Operativo. Solitamente causa un
segnale di eccezione e spesso il Sistema Operativo registra in un file il contenuto della memoria
(dump) oppure elenca ogni istruzione nel momento in cui viene eseguita (trace).
Successivamente segnala l’evento con un messaggio di errore. Solitamente è presente anche
un debugger che è incaricato di ricercare e correggere gli errori che si sono verificati. Il
debugger rileva le eccezioni che la CPU ha segnalato dopo ogni istruzione tramite una modalità
di esecuzione denominata esecuzione a passo singolo (single sleep). Gli errori sono spesso
indicati e graduati in base ad un livello assegnato definito tramite un parametro.

CARICAMENTO ED ESECUZIONE
 load
Serve per caricare in memoria un programma.

 execute
Serve per eseguire un programma. Quando viene richiesta l’esecuzione di un programma
successivamente alla sua esecuzione bisogna stabilire a quale processo restituire il controllo.
Nel caso in cui si volesse restituire il controllo ad un programma già esistente bisognerebbe
creare un immagine in memoria del programma da richiamare.

Lisandro Francesco Pagina 7 18/04/2011


Sistemi Operativi

CREAZIONE DI UN PROCESSO
 create process o submit job
Nel caso in cui si voglia eseguire uno o più programmi in modo concorrente si crea un nuovo
processo in multiprogrammazione tramite una di queste due chiamate.

ESAME ED IMPOSTAZIONE DEGLI ATTRIBUTI DI UN PROCESSO


 get process attributes e set process attributes
Nella creazione di un nuovo processo, sia in esecuzione singola che concorrente, bisogna
mantenerne il controllo determinando e reimpostando tutti gli attributi, le sue priorità, il tempo
di esecuzione ed altro. Per farlo vengono in aiuto queste due istruzioni.

TERMINAZIONE DI UN PROCESSO
 terminate process
Nel caso in cui si riscontra che un processo appartenente ad un programma è inutile o non
corretto si utilizza questa istruzione.

ATTESA PER IL TEMPO INDICATO O PER LA SEGNALAZIONE DI UN EVENTO


 wait tempo o wait evento
Serve per definire l’attesa per la terminazione dei processi in esecuzione. Si può impostare in
base ad un determinato periodo di tempo ma può essere definita in base al verificarsi di un
evento. L’evento viene segnalato dai processi tramite l’istruzione signal evento.

FUNZIONAMENTO DELL’ MS-DOS


Il Sistema Operativo MS-DOS dispone di un interprete dei comandi che viene attivato all’avvio del
calcolatore e che ha la possibilità di eseguire un singolo programma alla volta senza creare alcun
processo. Il suo metodo è il seguente:

 Caricamento del Programma in memoria riscrivendo anche la maggior parte della memoria che
il programma occupa
 Impostazione del contatore di programma alla prima istruzione del programma da eseguire
 Esecuzione del programma
1. Un errore causa un eccezione

Lisandro Francesco Pagina 8 18/04/2011


Sistemi Operativi

2. Il Programma richiede una chiamata di sistema per l’interruzione del programma


 Viene registrato il codice di errore in memoria per un eventuale uso successivo
 Viene ripresa la parte di memoria che non era stata sovrascritta che ricarica dal disco la parte
rimanente. Cosi che l’interprete è di nuovo in funzione
 Viene visualizzato l’interprete che mette in mostra l’errore verificatosi

2.6 System Call – Gestione dei File


Le System Call per quanto riguarda la gestione dei file prevedono le seguenti operazioni sul file
system:

CREAZIONE E CANCELLAZIONE DEI FILE


 create
 delete

APERTURA E CHIUSURA DEI FILE


 open
 close

LETTURA, SCRITTURA E POSIZIONAMENTO


 read
 write
 reposition
Questa operazione può essere quella di riavvolgere il file e di saltare alla fine del file.

ESAME ED IMPOSTAZIONE DEGLI ATTRIBUTI DI UN FILE


Esempi di attributi di un file sono il nome, il tipo, i codice di protezione e le informazioni di
contabilizzazione. Le System Call utilizzate per modificare ed accedere al valore degli attributi sono
i seguenti:
 get file attribute
 set file attribute

Lisandro Francesco Pagina 9 18/04/2011


Sistemi Operativi

Esistono ulteriori chiamate di Sistema che, a volte, sono sostituite da API e riguardano ad esempio
lo spostamento e la copia di un file:
 move
 copy

2.7 System Call – Gestione dei Dispositivi


Quando viene eseguito un programma è necessario che questo possa accedere ed utilizzare delle
risorse come spazio di memoria, driver, unità a nastro, file e così via.
Il controllo ritorna al programma solo ed esclusivamente quando le risorse sono state assegnate.
In Sistemi Multiutente possono avvenire le seguenti System Call per la gestione dei dispositivi:

RICHIESTA E RILASCIO DI UN DISPOSITIVO


 request
Viene prescritta una richiesta al dispositivo al fine di assicurarne l’uso esclusivo. Analogo alla
funzione open per i file.

 relaease
Dopo l’uso il dispositivo deve essere rilasciato al fine di renderlo disponibile per altri utenti o
programmi. Analogo alla funzione close per i file.

LETTURA, SCRITTURA E POSIZIONAMENTO DI UN DISPOSITIVO


Come si può notare i dispositivi vengono trattati analogamente come i file. Infatti molti Sistemi
UNIX combinano un’unica struttura file-dispositivi. Le System Call saranno le seguenti:

 read
 write
 reposition

ESAME ED IMPOSTAZIONE DEGLI ATTRIBUTI DI UN DISPOSITIVO


I dispositivi sono identificabili da nomi, da attributi speciali o dal collocamento in certe directory.

Lisandro Francesco Pagina 10 18/04/2011


Sistemi Operativi

INSERIMENTO LOGICO ED ESCLUSIONE LOGICA DI UN DISPOSITIVO


Tramite delle scelte logiche il dispositivo può essere inserito o escluso.

2.8 System Call – Gestione delle Informazioni


Quando viene eseguito un programma ci sono chiamate di sistema adibite al trasferimento di
informazioni relative al programma.
Un’ulteriore esempio potrebbe essere la System Call indicata per ottenere informazioni sull’ora
(time) o sulla data attuale (date); altre invece informazioni sugli utenti collegati o il numero della
versione del sistema operativo,la quantità di memoria disponibile o lo spazio nei dischi…
Come detto, il Sistema Operativo contiene anche informazioni relative ai processi in esecuzione le
quali sono accessibili tramite i metodi degli attributi.

2.9 System Call – Gestione delle Comunicazioni


Esistono due modelli principali di comunicazione tra processi: Il modello a scambio di messaggi e
il modello a memoria condivisa.

MODELLO A SCAMBIO DI MESSAGGI


In questo modello i processi si scambiano informazioni tramite messaggi e grazie alla presenza di
una casella di posta comune. Un processo che deve inviare un messaggio deve conoscere un
identificatore del processo destinatario. Nel caso di processi dislocati in elaboratori diversi viene
utilizzato come identificatore l’hostname della macchina destinataria e il numero di porta del
processo di destinazione. Nel caso in cui il processo ricevente si trovi sulla stessa macchina esso
avrà in tutti i casi un identificatore definito in base al nome del processo (get processid) e al
nome dell’host (get hostid). Successivamente viene aperto il collegamento/connessione (open
connection) , il processo ricevente deve accettare la connessione (accept connection) e
alla fine della trasmissione è necessario chiuderla (close connection).
Per la gestione delle comunicazioni ci sono programmi appositi che mantengono in esecuzione
una chiamata di sistema denominata “wait for connection” e vengono chiamati in causa
quando si stabilisce un collegamento.
Grazie a questi demoni client e server si scambiano i messaggi per mezzo delle chiamate di sistema
relative alla scrittura (write message) e alla lettura dei messaggi (read message).

Lisandro Francesco Pagina 11 18/04/2011


Sistemi Operativi

MODELLO A MEMORIA CONDIVISA


In questo caso i processi si scambiano informazioni condividendo una parte di memoria. Anche se
nella politica di protezione dei dati un processo non può accedere alla memoria di un altro
processo questo limite è superato dagli accordi fatti dai due processi. La creazione di aree di
memoria è possibile tramite la System Call shared memory create e l’accesso a tale memoria
è possibile tramite la System Call shared memory attach. I processi hanno la possibilità di
scrivere e leggere questi spazi di memoria.
L’accesso alla memoria è utile per velocizzare le operazioni delle comunicazioni mentre lo scambio
di messaggi per far comunicare due processi in elaboratori diversi.

2.10 Programmi di Sistema


Parlando di programmi di Sistema parliamo dello strato più alto di un Sistema Operativo che
riguarda la presenza di programmi applicativi utili e necessari per svolgere le funzioni più comuni in
modo semplice ed efficace. Le principali funzioni che essi svolgono sono le seguenti:

 Gestione dei file


Questi programmi sono interfacce per la cancellazione ,la creazione, la ridenominazione, la
stampa, la visualizzazione e altre operazioni sui file.

 Rendere disponibili le informazioni di stato


Questi programmi indicano le informazioni principali sul sistema (data,ora, quantità di
memoria, spazio nei dischi, utenti…) e in alcuni casi anche informazioni più dettagliate
(prestazioni, accessi al sistema, debug…).

 Possibilità di Modifica dei file


Questi programmi rappresentano editor per la creazione e la modifica di appositi file.

 Ausilio alla programmazione


Questi programmi sono compilatori, assemblatori, debugger ed interpreti di vari linguaggi.
Successivamente il S.O. mette a disposizione strumenti utili per il caricamento dei programmi
assemblati.

Lisandro Francesco Pagina 12 18/04/2011


Sistemi Operativi

 Gestione delle comunicazione tra processi interni e dislocati fisicamente


Questi sono programmi utili per collegare i processi ed utenti tra di loro sia nella stessa
macchina che su macchine diverse (posta elettronica, browser web…).

 Utilità di Sistema
Questi programmi sono programmi che risolvono ed eseguono problemi ed operazioni comuni
(elaboratore di testi, fogli di cacolo, disegno,videogiochi…).

2.11 Struttura del Sistema Operativo


I primi Sistemi Operativi erano limitati dal punto di vista dell’hardware perché il loro scopo
principale era quello di fornire molte funzioni in modo semplice e diretto cercando di
strutturare il sistema nel modo meno complesso possibile. Le System Call non esistevano
perché la maggior parte delle funzionalità erano svolte accedendo direttamente al computer.
L’MS-DOS non aveva una divisione i moduli e le interfacce tra i livelli non erano ben separate. La
stessa cosa valeva per i primi sistemi UNIX che erano divisi in due semplici parti : i programmi di
sistema e il kernel (che era sotto le chiamate di sistema e sopra lo strato fisico). La seguente mostra
una struttura del Sistema UNIX:

UTENTI

SHELL, INTERPRETI DEI COMANDI, COMPILATORI E LIBRERIE DI SISTEMA

SYSTEM CALL CHE FANNO DA INTERFACCIA CON IL KERNEL

KERNEL

INTERFACCIA DEL KERNEL VERSO L’HARDWARE

HARDWARE

Successivamente con l’evoluzione dell’hardware lo stesso sistema di calcolo fu possibile dividerlo in


moduli più piccoli. Questo approccio migliora le prestazioni, la manutenzione e separazione degli
starti in base a compiti prestabiliti.

Lisandro Francesco Pagina 13 18/04/2011


Sistemi Operativi

2.12 Metodo Stratificato


Un metodo conosciuto e utilizzato, per rendere modulare un sistema operativo è il metodo
stratificato. Questo metodo prevede che il sistema è suddiviso in un certo numero di livelli o
strati dove il più basso corrisponde all’hardware, il più alto all’interfaccia utente.

Strato N - Interfaccia Utente

Altri strati

Strato 0 - Hardware

Uno strato rappresenta in linea di principio la realizzazione materiale di un concetto astratto


che ha il compito di incapsulare e trattare i dati in un modo specifico.
Ogni strato offre delle operazioni e dei servizi solo ed esclusivamente allo strato superiore.
Lo strato hardware offre dei servizi allo strato 1 , ossia superiore ad esso, che non intaccherà il resto
del sistema perché per realizzare le proprie funzioni utilizzerà solo ed esclusivamente le funzioni
offerte dallo strato hardware (strato 0).
La stessa cosa farà lo strato 2 che utilizzerà solo le funzioni offerte dallo strato 1 per svolgere le
proprie operazioni....e così via. Quando accade un errore è facile arrivare allo strato che lo ha
causato e ripararlo. Ogni strato nasconde agli strati superiori ad esso l’esistenza degli strati inferiori.
I Sistemi progettati con un metodo stratificato presentano un calo delle prestazioni dovuto
alla sequenza di chiamate tra i vari strati ed al passaggio di memoria che gli stessi dati
scambiati hanno.

Lisandro Francesco Pagina 14 18/04/2011


Sistemi Operativi

2.13 Microkernel
Man mano che passò il tempo si arrivò agli anni ’80 dove un’università degli Stati Uniti decise di
togliere molte funzionalità dei kernel per darle ai processi utenti. Questa evoluzione prevedeva un
kernel sviluppato in moduli secondo un orientamento a microkernel dove tutti i componenti
non essenziali del kernel vennero rimossi dallo stesso e la loro gestione venne affidata a
programmi di sistema e di utente. Così facendo il kernel gestiva solo i processi in esecuzione,
la memoria e la comunicazione tra programmi client e servizi in esecuzione nello spazio
utente tramite scambio di messaggi.
Questo comportò una più semplice manutenzione del kernel e più affidabilità dato che gli errori su
servizi, prima gestiti dal kernel, non compromettono il resto del sistema operativo.
Il problema del mikrokernel risulta sempre quello derivato da cali di prestazioni dovuti alla
gestione di servizi aggiuntivi da parte di processi utente.

2.14 Moduli
Attualmente i sistemi operativi vengono progettati secondo tecniche di programmazione ad
oggetti che prevedono un kernel composto da un insieme di componenti fondamentali (e
solamente essenziali) e moduli che lo integrano in fase di avvio o dinamicamente. Questa
strategia è comune nelle implementazioni attuali di UNIX, Solaris, Linux e Mac OS X. La struttura di
Solaris si presenta nel seguente modo:

CLASSI DI FILE SYSTEM CHIAMATE DI


SHEDULING SISTEMA CARICABILI

KERNEL SOLARIS FORMATI ESEGUIBILI


DI BASE

DRIVER DEI VARIE MODULI STREAM


DISPOSITIVI

Lisandro Francesco Pagina 15 18/04/2011


Sistemi Operativi

Il Sistema finale ha ogni parte del kernel con una propria interfaccia e ciò lo fa assomigliare ad
un sistema a strati. È molto più flessibile dei Sistemi a strati perché ogni modulo ha la
possibilità di comunicare con gli altri moduli. Il Modulo centrale gestisce i moduli essenziali
come nei sistemi a microkernel migliorando l’efficienza tramite la comunicazione dei moduli che
avviene senza invocare le funzionalità di trasmissione dei messaggi.

2.15 Macchine Virtuali


Una macchina virtuale porta la metodologia basata sulla stratificazione ad una vera e propria
conclusione astraendo l’hardware e progettando per ogni componente dell’hardware (CPU,
memoria, dispositivi…) un ambiente esecutivo software diverso. Ogni processo in apparenza sarà
dotato del proprio processore e del proprio spazio di memoria disponendo di una copia virtuale
della macchina su cui gira. Le ragioni dell’utilizzo di una macchina virtuale vanno dalla possibilità di
condivisione del medesimo hardware alla possibilità di poter disporre di più Sistemi Operativi.
Le macchine virtuali sono utili in fase di sviluppo perché offrono una copia dell’hardware
sottostante che non viene intaccato.
Le macchine virtuali offrono maggiore sicurezza perché proteggono le risorse di sistema dato che
ogni macchina è isolata dalle altre (questo comporta anche che le risorse non sono condivise).
Per ottenere la condivisione, o lo si fa condividendo un minidisco che emula la risorsa o creando
una rete di macchine virtuali che emula una rete fisica. Esempi di macchine virtuali sono VMvare o
la Java Virtual Machine.

Lisandro Francesco Pagina 16 18/04/2011

Potrebbero piacerti anche