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 Giulio.Rossetti@gmail.com
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 (DLL- Win32 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? Per iniziare a documentarsi: http://en.wikipedia.org/wiki/list_of_open_source_games
Si Emula per: Conclusioni (I) 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!! Grazie per l'attenzione!! (un ringraziamento particolare va a TuxFactory per i Tux usati nella presentazione)