Download Struttura di un Sistema Operativo

Document related concepts
no text concepts found
Transcript
Strutture dei Sistemi Operativi
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.2
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.3
Silberschatz, Galvin and Gagne ©2009
Servizi del sistema operativo - 1

Un Sistema Operativo deve fornire un insieme di servizi che variano a seconda
del Sistema Operativo, ma includono almeno:

Esecuzione di un programma


Operazioni di I/O


Il sistema deve essere in grado di caricare in memoria dei programmi,
mandarli in esecuzione e terminare in maniera corretta l’esecuzione
anche in presenza di errori
Un programma in esecuzione necessita di I/O da un dispositivo
Gestione del file system

Il file system permette ai programmi di leggere e scrivere file e directory,
crearle, cancellarle e la gestione dei permessi di lettura e scrittura
Operating System Concepts – 8th Edition
2.4
Silberschatz, Galvin and Gagne ©2009
Servizi del sistema operativo - 2


Comunicazioni

I processi possono scambiarsi informazioni, sullo stesso computer o
attraverso una rete tra computer disposti su una rete

La comunicazione può avvenire attraverso una memoria condivisa o
attraverso il scambio di messaggi
Rilevamento d’errori

Un Sistema Operativo deve essere costantemente capace di rilevare
possibili errori

Gli errori possono presentarsi sulla CPU, in memoria, sui dispositivi di
I/O o nei programmi utenti

Per ogni tipo di errore, il Sistema Operativo deve intraprendere l’azione
opportuna per assicurare una continuazione corretta
Operating System Concepts – 8th Edition
2.5
Silberschatz, Galvin and Gagne ©2009
Servizi del sistema operativo - 3
 Un altro insieme di funzioni è essenziale per assicurare il corretto
funzionamento del sistema attraverso le risorse condivise

Assegnazione delle risorse


Contabilizzazione dell’uso delle risorse


Più utenti i più processi concorrenti richiedono una allocazione equa
delle risorse disponibili (e.g., cicli di CPU, memoria, spazio su disco,
dispositivi di I/O)
Tenere traccia degli utenti e della quantità di risorse che utilizzano
Protezione e sicurezza

Le informazioni devono poter essere archiviate e gestite secondo
politiche di protezione, inoltre i processi non devono poter interferire
l’uno con l’altro

Se un sistema deve essere protetto e sicuro, al suo interno devono
esistere delle precauzioni ovunque. La forza di una catena è
esattamente quella del suo anello più debole
Operating System Concepts – 8th Edition
2.6
Silberschatz, Galvin and Gagne ©2009
Panoramica dei servizi
Operating System Concepts – 8th Edition
2.7
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.8
Silberschatz, Galvin and Gagne ©2009
Interfaccia utente CLI
 L’interfaccia utente a linea di comando permette di impartire direttamente
comandi al SO (istruzioni di controllo)
 Solitamente un utente ha la possibilità di scegliere diversi CLI chiamate
shell
 La sua funzione è quella di interpretare ed eseguire la successiva
istruzione di comando (interprete dei comandi)
 Il comando può essere implementato internamente alla shell
 Oppure può essere un programma esterno da avviare

una eventuale aggiunta di nuovo comandi non comporta la modifica
della shell
Operating System Concepts – 8th Edition
2.9
Silberschatz, Galvin and Gagne ©2009
L’interprete dei comandi Linux - 1
 Esempio

A fronte del comando
$ rm file.txt

l’interprete cerca un file chiamato rm, generalmente seguendo un
percorso standard nel file system (usr/bin), lo carica in memoria e lo
esegue con il parametro file.txt

Esegue la cancellazione del file file.txt
Operating System Concepts – 8th Edition
2.10
Silberschatz, Galvin and Gagne ©2009
L’interprete dei comandi Linux - 2
 Bash shell (per Bourne Again SHell) è una shell testuale del progetto GNU,
ma disponibile anche per alcuni sistemi Microsoft Windows (es. Cygwin)
Operating System Concepts – 8th Edition
2.11
Silberschatz, Galvin and Gagne ©2009
Interfaccia utente GUI
 La metafora del desktop rappresenta l’interfaccia verso il sistema

Di solito si utilizzando mouse, tastiera, e monitor

Le icone rappresentano file, programmi o altro

L’interazione avviene usando il mouse sopra gli oggetti del desktop
generando opportune azioni da gestire (apri, sposta, esegui, etc…)

Inventata alla Xerox PARC…copiata dalla Apple Computer ☺
Operating System Concepts – 8th Edition
2.12
Silberschatz, Galvin and Gagne ©2009
The Mac OS X GUI
Operating System Concepts – 8th Edition
2.13
Silberschatz, Galvin and Gagne ©2009
Interfacce utente
 Molti sistemi operativi attuali includono interfacce sia CLI che GUI

Microsoft Windows è ad interfaccia grafica, ma dotato di una shell di
comandi (DOS)

Apple Mac OS X interagisce per mezzo della GUI “Aqua”, ma è dotato
di un kernel UNIX e mette a disposizione diversi tipi di shell

Solaris è tipicamente CLI, con interfaccia GUI opzionale (Java Desktop,
KDE)

Linux era originariamente, come tutti i sistemi UNIX-like, di tipo CLI, ma
le versioni attuali offrono interfacce GUI molto avanzate (KDE, GNOME)
Operating System Concepts – 8th Edition
2.14
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.15
Silberschatz, Galvin and Gagne ©2009
Chiamate di sistema
 Le chiamate di sistema (o system call) rappresentano l’interfaccia
ai servizi forniti dal Sistema Operativo
 Tipicamente sono scritte in un linguaggio ad alto livello (C/C++)
 Sono principalmente accessibili attraverso una API (Application
Program Interface) e quasi mai direttamente (anche se è possibile)
 Le API più comuni sono:
 Win32 API per Windows
 POSIX API (Portable Operating System Interface for Unix) per I
sistemi POSIX compatibili (UNIX, Linux, MacOS X)
 Java API per la Java virtual machine
Operating System Concepts – 8th Edition
2.16
Silberschatz, Galvin and Gagne ©2009
Esempio di System Call
 La sequenza delle system call per poter copiare il contenuto di un file in un
altro file
Operating System Concepts – 8th Edition
2.17
Silberschatz, Galvin and Gagne ©2009
Esempio usando le Java API
// Copies src file to dst file.
// If the dst file does not exist, it is created
void copy(File src, File dst) throws IOException {
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
Operating System Concepts – 8th Edition
2.18
Silberschatz, Galvin and Gagne ©2009
Implementazione delle System Call
 Tipicamente ad ogni system call è associato un numero
 Il Sistema Operativo mantiene una tabella con tutti gli indici delle
system call
 L’interfaccia alle chiamate di sistema invoca la system call all’interno
del kernel del Sistema Operativo e ritorna lo stato della system call e
un certo numero di valori

Il programmatore non ha bisogno di sapere come è implementata
la system call

Deve solo capire come funzione l’API e cosa restituirà la chiamata
 In questo modo molti dettagli dell’interfaccia del SO sono nascosti al
programmatore attraverso l’API
Operating System Concepts – 8th Edition
2.19
Silberschatz, Galvin and Gagne ©2009
Relazioni API – System call – SO
Operating System Concepts – 8th Edition
2.20
Silberschatz, Galvin and Gagne ©2009
Passaggio di parametri
 Per poter chiamare una system call abbiamo bisogno di passargli un
insieme di parametri
 È possibile adoperare tre metodi per il passaggio dei parametri

Passare tutti i parametri nei registri
 In alcuni casi ci potrebbero essere più parametri che registri
 I parametri sono memorizzati in un blocco in memoria, l’indirizzo
del blocco è passato come parametro in un registro
 Approccio utilizzato da Linux e Solaris
Non limita il numero dei parametri che è possibile passare
 I parametri sono passati attraverso lo stack
 Il programma li inserisce (push)
 Il Sistema Operativo li estrae (pop)

Operating System Concepts – 8th Edition
2.21
Silberschatz, Galvin and Gagne ©2009
Passaggio attravero blocco di memoria
Operating System Concepts – 8th Edition
2.22
Silberschatz, Galvin and Gagne ©2009
Categorie di chiamate di sistema - 1
 Le chiamate di sistema sono classificabili in cinque categorie:

Controllo dei processi

Gestione dei file

Gestione dei dispositivi

Gestione delle informazioni

Comunicazioni
Operating System Concepts – 8th Edition
2.23
Silberschatz, Galvin and Gagne ©2009
Categorie di chiamate di sistema - 2
 Controllo dei processi

Creazione e arresto di un processo (fork, exit)

Caricamento ed esecuzione (load, exec)

Esame ed impostazione degli attributi di un processo (get/set
process attributes )

Attesa per il tempo indicato o fino alla segnalazione di un evento (wait)

Assegnazione e rilascio di memoria

Terminazione (normale e anormale - end, abort)
Operating System Concepts – 8th Edition
2.24
Silberschatz, Galvin and Gagne ©2009
Categorie di chiamate di sistema - 2
 Gestione dei file

Creazione e cancellazione di file (create, delete)

Apertura e chiusura di file (open, close)

Lettura, scrittura e posizionamento (read, write, reposition)

Esame ed impostazione degli attributi di un file (get/set file
attribute)
 Gestione dei dispositivi di I/O

Richiesta e rilascio di un dispositivo (request, release)

Lettura, scrittura e posizionamento

Esame ed impostazione degli attributi di un dispositivo (ioctl)
Operating System Concepts – 8th Edition
2.27
Silberschatz, Galvin and Gagne ©2009
Categorie di chiamate di sistema - 3
 Gestione delle informazioni

Esame ed impostazione dell’ora e della data (time, date)

Esame ed impostazione dei dati del sistema (ver)

Esame ed impostazione degli attributi dei processi, file e dispositivi
(getpid)
 Comunicazione

Creazione e chiusura di una connessione (open connection,
close connection)

Invio e ricezione di messaggi (send, receive)

Informazioni sullo stato dei trasferimenti

Inserimento ed esclusione di dispositivi remoti

Condivisione della memoria (shmget)
Operating System Concepts – 8th Edition
2.28
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.29
Silberschatz, Galvin and Gagne ©2009
Programmi di sistema - 1
 I programmi di sistema (o di utilità) forniscono un ambiente
conveniente per lo sviluppo e l’esecuzione di programmi

Gestione dei file

Informazioni di stato

Modifica dei file

Ambienti d’ausilio alla programmazione

Caricamento ed esecuzione dei programmi

Comunicazioni
 La maggior parte degli utenti normalmente ha una visione del
sistema operativo attraverso i programmi di sistema (o meglio le
applicazioni) più che attraverso le chiamate di sistema

CLI vs GUI

Ma ogni applicazione utilizza in fondo sempre le stesse
chiamate di sistema
Operating System Concepts – 8th Edition
2.30
Silberschatz, Galvin and Gagne ©2009
Programmi di sistema - 2
 Gestione di file

Per creare, cancellare, copiare, rinominare, stampare e,
genericamente, gestire le operazioni su file e directory
 Informazioni di stato

Per ottenere dal sistema informazioni tipo data, spazio di
memoria disponibile, spazio disco, numero di utenti abilitati

Per ottenere informazioni sulle statistiche di utilizzo del sistema
di calcolo (prestazioni, logging, etc.) e per operazioni di
debugging

Per ottenere informazioni sulla configurazione del sistema
Operating System Concepts – 8th Edition
2.31
Silberschatz, Galvin and Gagne ©2009
Programmi di sistema - 3
 Modifica di file

Editori di testo, per creare e modificare file

Comandi speciali per cercare informazioni all’interno di file o
effettuare trasformazioni sul testo
 Supporto a linguaggi di programmazione

Assembler, compilatori e interpreti
 Caricamento ed esecuzione di programmi

Loader, linker, debugger per linguaggio macchina e linguaggi
di alto livello
 Comunicazioni

Per creare connessioni virtuali tra processi, utenti e sistemi di
elaborazione

Permettono agli utenti lo scambio di messaggi video e via email, la navigazione in Internet, il login remoto ed il
trasferimento di file
Operating System Concepts – 8th Edition
2.32
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.34
Silberschatz, Galvin and Gagne ©2009
Progettazione del sistema operativo
 Non esiste un metodo unico per la progettazione e la realizzazione di
Sistema Operativo, ma alcuni approcci si sono dimostrati efficaci
 La struttura interna dei diversi SO può variare notevolmente…
 …in dipendenza dall’hardware
 …e dallo scopo del sistema operativo
 Normalmente si parte definendo gli obiettivi e le specifiche. Gli obiettivi
possono essere

Utente – il SO deve essere di semplice utilizzo, facile da
imparare, affidabile, sicuro e veloce

Di sistema – il SO deve essere semplice da progettare, facile da
realizzare e manutenere, flessibile, affidabile, error-free ed
efficiente
Operating System Concepts – 8th Edition
2.35
Silberschatz, Galvin and Gagne ©2009
Meccanismi e politiche
 Importanti principi da tenere separati:

Politiche: Cosa


Quali sono i compiti e i servizi che il SO dovrà svolgere/fornire?
Meccanismi: Come

Come realizzare i compiti e i servizi?
 I meccanismi determinano “come realizzare qualcosa”, le politiche
definiscono “il qualcosa” da realizzare
 La separazione fra politica e meccanismi garantisce la massima
flessibilità se le decisioni politiche subiscono cambiamenti nel corso
del tempo
Operating System Concepts – 8th Edition
2.36
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.37
Silberschatz, Galvin and Gagne ©2009
Struttura del Sistema Operativo
 Un Sistema Operativo può essere progettato strutturandolo in diversi modi,
tra i più comuni abbiamo

Struttura semplice

Metodo stratificato

Microkernel

Struttura modulare
Operating System Concepts – 8th Edition
2.38
Silberschatz, Galvin and Gagne ©2009
Struttura semplice
 I primi sistemi operativi erano limitati dal punto di vista dell’hardware

Ad esempio i microprocessori 8086 non avevano la modalità kernel
quindi gli utenti potevano facilmente mettere in crisi il sistema o
bloccare il sistema
 Lo scopo principale era quello di fornire quante più funzioni possibili nel
modo più semplice e diretto cercando di mantenere la complessità del
sistema al minimo
 Il concetto di system call era molto limitato e molte operazioni erano svolte
accedendo direttamente all’hardware
Operating System Concepts – 8th Edition
2.39
Silberschatz, Galvin and Gagne ©2009
MS-DOS
 Il Sistema Operativo MS DOS fu progettato per fornire il massimo delle
funzionalità nel minor spazio possibile

Monoutente e monotask

Non era diviso in moduli

Le interfacce e i livelli di funzionalità non erano ben separate
Operating System Concepts – 8th Edition
2.40
Silberschatz, Galvin and Gagne ©2009
UNIX
 Le prime versioni di UNIX erano limitate dall’hardware, questo
implicava una struttura scarsamente stratificata
 UNIX consisteva due parti separati:

I programmi di sistema

Il kernel

Consisteva di tutti quello al di sotto delle chiamate di sistema e
sopra lo strato fisico

Forniva i servizi per il file system, lo scheduling della CPU,
gestione della memoria, etc…
Operating System Concepts – 8th Edition
2.41
Silberschatz, Galvin and Gagne ©2009
Traditional UNIX System Structure
Operating System Concepts – 8th Edition
2.42
Silberschatz, Galvin and Gagne ©2009
Approccio stratificato - 1
 Il SO è suddiviso in un certo numero di strati (layer), ciascuno
costruito sopra gli strati inferiori

Lo strato più basso (strato 0) è l’hardware, il più alto (strato N) è
l’interfaccia utente
 L’architettura degli strati è tale che ciascuno strato impiega
esclusivamente funzioni (operazioni) e servizi di strati di livello
inferiore

Incapsulamento delle informazioni
Operating System Concepts – 8th Edition
2.43
Silberschatz, Galvin and Gagne ©2009
Approccio stratificato - 2
 Vantaggio

Semplicità di realizzazione e messa a punto (che viene realizzata strato
per strato)
 Svantaggi

Difficoltà nella definizione appropriata dei diversi strati, poiché ogni
strato può sfruttare esclusivamente le funzionalità degli strati su cui
poggia

Tempi lunghi di attraversamento degli strati (passaggio di dati) per
portare a termine l’esecuzione di una system call
Operating System Concepts – 8th Edition
2.44
Silberschatz, Galvin and Gagne ©2009
Microkernel System Structure
 Nella struttura a microkernel molte funzioni sono tirate fuori dal kernel

Offre i servizi minimi di gestione dei processi, della memoria e di
comunicazione
 La comunicazione avviene attraverso scambio di messaggi fornito da
moduli di comunicazione
 Vantaggi:

Estendibile: i nuovi servizi si aggiungono allo spazio utente

Facilità di modifica del kernel

Sistema più facile da portare su nuove architetture

Maggiore affidabilità e sicurezza

Se un servizio e compromesso lo sarà all’interno dello spazio
utente quindi il sistema continua funzionare
 Svantaggi

Cali di prestazioni indotti dal sovraccarico della comunicazione
Operating System Concepts – 8th Edition
2.45
Silberschatz, Galvin and Gagne ©2009
Struttura di Mac OS X
 Il microkernel Mach gestisce la memoria, le chiamate di procedura remote
(RPC), la comunicazione fra processi (IPC) e lo scheduling dei thread
 Il kernel BSD mette a disposizione una CLI, i servizi legati al file system e
alla comunicazione e la API POSIX
Operating System Concepts – 8th Edition
2.46
Silberschatz, Galvin and Gagne ©2009
Struttura modulare
 I Sistemi Operativi moderni utilizzano un approccio ibrido implementando
dei moduli del kernel

Si utilizza un approccio orientato agli oggetti

Ogni modulo comunica con un altro modulo attraverso una interfaccia
nota

Ogni modulo è caricato dal kernel quando è necessario
 In definitiva, simile al metodo stratificato ma più flessibile
Operating System Concepts – 8th Edition
2.47
Silberschatz, Galvin and Gagne ©2009
Approccio modulare di Solaris
Operating System Concepts – 8th Edition
2.48
Silberschatz, Galvin and Gagne ©2009
Outline
 Servizi di un Sistema Operativo
 Interfaccia utente del Sistema Operativo
 Interfaccia al programmatore

System calls

Tipi di System calls
 Programmi di sistema
 Progettazione e realizzazione di un Sistema Operativo
 Struttura di un Sistema Operativo
 Macchine Virtuali
Operating System Concepts – 8th Edition
2.49
Silberschatz, Galvin and Gagne ©2009
Macchine virtuali - 1
 La macchina virtuale porta l’approccio stratificato alle sue estreme
conseguenze logiche
 Sia l’hardware che il sistema operativo (ospite) vengono trattati
uniformemente come hardware
 Una macchina virtuale realizza un’interfaccia identica alla macchina
fisica sottostante: ogni processo ospite può usufruire di una copia
virtuale del calcolatore sottostante

Solitamente il processo ospite è un sistema operativo
 Le risorse del computer fisico vengono condivise in modo che il SO
crei l’illusione dell’esistenza di processi multipli, ciascuno in
esecuzione sul proprio processore, con la propria memoria (virtuale)
Operating System Concepts – 8th Edition
2.50
Silberschatz, Galvin and Gagne ©2009
Macchine virtuali - 2
(a) senza virtual machine (b) virtual machine
Operating System Concepts – 8th Edition
2.51
Silberschatz, Galvin and Gagne ©2009
Macchine virtuali - 3
 Il concetto di macchina virtuale fornisce una protezione completa delle
risorse di sistema (hardware e SO ospitante), dato che ciascuna macchina
virtuale è isolata da tutte le altre

Questo isolamento, tuttavia, non permette una condivisione diretta delle
risorse
 Per la condivisione di risorse…

Condivisione di un volume del file system
 Le macchine virtuali sono adoperate per lo sviluppo e la ricerca

Lo sviluppo può essere fatto su una macchina virtuale piuttosto che su
una reale in modo tale da non interferire con le normali operazioni del
sistema
Operating System Concepts – 8th Edition
2.52
Silberschatz, Galvin and Gagne ©2009
Architettura VMware
Operating System Concepts – 8th Edition
2.53
Silberschatz, Galvin and Gagne ©2009
Virtual box
Operating System Concepts – 8th Edition
2.54
Silberschatz, Galvin and Gagne ©2009
Java Virtual machine - 1
 Definita: Application virtual machine
 Il linguaggio di programmazione Java (1995) è un linguaggio orientato agli
oggetti che, oltre a fornire una vasta libreria API, permette la definizione di
una macchina virtuale
 Gli oggetti si specificano con il costrutto class e un programma consiste di
una o più classi
 Per ognuna, il compilatore produce un file (.class) contenente il bytecode

Il linguaggio macchina della Java Virtual Machine (JVM), indipendente
dall’hardware sottostante e che viene eseguito sulla macchina virtuale
 I bytecode sono controllati per verificare la presenza di istruzioni che
possono compromettere la sicurezza della macchina
Operating System Concepts – 8th Edition
2.55
Silberschatz, Galvin and Gagne ©2009
Java Virtual machine - 2
 La JVM rende possibile lo sviluppo di programmi indipendenti
dall’architettura e offre ai programmi scritti in Java un’astrazione uniforme
del sistema
 I programmi Java sono però più lenti dei corrispondenti programmi scritti in
C (sono normalmente interpretati)
 JVM disponibili per Windows, Linux, Mac OS X e incorporate su vari
browser, che a loro volta sono eseguiti su più piattaforme
Operating System Concepts – 8th Edition
2.56
Silberschatz, Galvin and Gagne ©2009
Java Virtual machine - 3
Operating System Concepts – 8th Edition
2.57
Silberschatz, Galvin and Gagne ©2009
Link interessanti
 VMware player:

http://www.vmware.com/download/player/download.html
 Immagini di macchine virtuali VMware :

http://www.vmware.com/appliances/directory/
 VirtualBox

http://virtualbox.softonic.it/
 Immagini di macchine virtuali VirtualBox:

http://virtualboxes.org/
 Java Virtual Machine

http://java.sun.com
Operating System Concepts – 8th Edition
2.58
Silberschatz, Galvin and Gagne ©2009