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