Emulazione e Virtualizzazione sotto Linux

Transcript

Emulazione e Virtualizzazione sotto Linux
Virtualizzazione ed Emulazione
Esistono 100 tipi di persone:
✔ Quelli che emulano,
✔ Quelli che virtualizzano,
✔ Quelli che emulano e
virtualizzano,
✔ Quelli che si stanno chiedendo
quali sono gli altri 96 tipi di
persone (e probabilmente non
emulano nè virtualizzano)
Guru@Work 2007
Giulio Rossetti
[email protected]
Di cosa stiamo parlando?
Parte prima
➢ Soluzioni per “utilizzare” applicativi scritti per Sistemi Operativi
diversi da quello installato sulla nostra macchina,
➢ Gestire più SO sulla stessa macchina allo stesso tempo,
➢ Mantenere Sw per sistemi Hw datati (Legacy Sw),
➢ Garantire la portabilità di applicazioni su più SO
➢ ...
➢ Giocare con Linux!!!
Le alternative...
✗ Emulazione: Simulazione di hw per usufruire di Sw scritto per
architetture diverse da quella reale del sistema.
✗ Virtualizzazione: Creazione di “sandbox” capaci di eseguire
eviroinments (ambienti) in modo da rendere disponibili SO guest sul
SO utilizzato (host).
✗ Ibridi: Solitamente versioni congiunte dei due approcci precedenti o
bridge tra eviroinments guest e host.
Emulazione
●
●
Obiettivo: Gestire (e mantenere) ambienti e sistemi Legacy.
Come: Ricreare a Sw ambienti Hw dismessi (circuiteria etc..) utili per
la gestione dei programmi da emulare.
✔ Pro: Compatibilità totale (pressapoco) con sistemi di diversa
architettura Hw.
✗ Contro: lentezza dovuta alla fase di emulazione delle risorse hw
(risolvibile per architetture datate, limitante per quelle recenti
soprattutto per quanto riguarda le console degli ultimi anni).
●
Esempi: Mame, qemu, Epsx, XboxEmu, NintendoDSemu....
La Virtualizzazione
●
●
Obiettivo: Rendere disponibile uno (o più) SO allo stesso tempo sulla
stessa macchina, oltre a quello di partenza.
Come: Creando un ambiente (evironment), da rendere disponibile a
ciascun SO guest, che gli consenta di avere a disposizione (in tutto o
in parte) le risorse del sistema Hw sottostante.
✔ Pro: Ambienti di lavoro indipendenti, SO guest “completi”, soluzioni
native. (Ottimalità per casi di test o server multipourpose).
✗ Contro: Pesantezza dei sistemi virtualizzati (per una normale
workstation), context switch tra SO, risorse Hw condivise.
●
Esempi: VirtualBox, Kvm, Xen, VmWare, ScummVM
Ancora Virtualizzazione...
Vantaggi
Problemi
●
Backup (snapshot)
●
3D
●
Sandbox
●
Streaming Video
●
Portability
●
CPU/GPU intensive work
●
VMM (Minimal VM)
●
Only same Architecture
Sistemi Ibridi
●
●
Obiettivo: Giusto compromesso tra Emulazione e Virtualizzazione
(possibilmente rendendo il processo più “veloce”)
Come: Realizzando un Layer (bridge) che si preoccupi di
reimplementare la parte delle librerie (o del kernel) dell'applicativo
desiderato mappandole sul SO corrente.
✔ Pro: Velocità, Hw reale utilizzato, leggerezza (integrazione di singole
applicazioni e non di SO).
✗ Contro: Implementazione non banale e personalizzata per ciascuna
libreria usata dai programmi desiderati, reverse-engeneering non
sempre ottimale.
●
Esempi: Wine, Solaris kernel.
Linux Gaming!!
Parte seconda
“Non puoi morire in un gioco della Lucas Arts”
●
●
E' possibile giocare con Linux?
Quanto visto serve a qualcosa oltre che a riempire il PC di SO che
non userò mai??
●
Quale delle 3 alternative viste è la migliore?
●
Chi è Guybrush Threepwood?*
* Un temibile pirata...
Linux Gaming: all'inizio fu il MAME...
Acronimo per “Multiple Arcade
Machine Emulator”
Fine: emulare piattaforme di gioco
arcade, documentare il
funzionamento di coin-op.
●
Rom..
●
...3 anni dall'uscita del gioco
Linux Gaming: l'avvento di ScummVM
Acronimo per “Script Creation
Utility for Maniac Mansion
Vitual Machine”
Fine: rendere disponibili titoli
della Lucas Arts su più
piattaforme Sw.
●
Cross-platform
●
Supporta giochi non SCUMM
Linux Gaming: Wine
Acronimo (ricorsivo) per
“Wine Is Not an Emulator”
Fine: Portabilità di Sw scritto per
MS Windows su GNU/Linux
●
Reverse-engineering (DLLWin32 API)
●
Layer di compatibilità
●
Wineserver
Linux Gaming: Comunity
Se ho problemi di configurazione a chi mi posso rivolgere?
✔http://www.linux-gamers.net/
✔http://linuxgameproject.netsons.org/
✔http://www.linuxgamingworld.com/
✔http://appdb.winehq.org/ (Sw supportato da wine)
✔http://icculus.org/lgfaq/ (Linux Gamers' FAQ)
✔http://www.GuruAtWork.com/forum/ (Coming Soon!!!)
✔....ma soprattutto... www.Google.it
Linux Gaming: Alternative Native
●
Per Giocare è obbligatorio
emulare/virtualizzare?
●
Esistono alternative su Linux?
●
Chi sviluppa giochi per Linux?
●
Dove posso reperirli?
●
Quanto costano?
●
●
Esistono porting di giochi
commerciali?
Emulare/Virtualizzare è legale?
legale
Per iniziare a documentarsi: http://en.wikipedia.org/wiki/List_of_open_source_games
Conclusioni (I)
Si Emula per:
●
Usare Sw scritto per sistemi datati
●
Ricreare ambienti Hw
Si Virtualizza per:
●
Server Multipourpose
●
Avere più SO attivi contemporaneamente
●
Ricerca e Testing
●
...
Si adottano Ibridi per:
●
●
Usare un solo SO tentando di ottenere il max della velocità possibile
da applicativi scritti per SO diversi
...
Conclusioni (II)
I motivi per cui è stato preso come esempio il mondo dei Videogame sono
due:
Circa il 90% dello sviluppo Hw è dovuto a migliorare la realizzazzione
della gestione del 3D (schede ATI con 150core...)
●
Una gestione critica, come quella del 3D, è un buon banco di prova per
le soluzioni viste: queste aggiungono, infatti, un ulteriore layer di
astrazione rendendo la computazione ancor più gravosa per le risorse Hw
reali della macchina.
●
Inoltre è così stato possibile sfatare il mito che non è possibile giocare
con Linux.
(benchmark dimostrano che, per i giochi supportati “out of the box” da wine, in buona
parte dei casi il confronto con Windows, a parità di Hw, è vinto...)
The End
Grazie per l'attenzione!!
(un ringraziamento particolare va a TuxFactory per i Tux usati nella presentazione)