Appunti lezioni 2019
26 Febbraio 2019
Precondizioni: manualità con command line, sistemi operativi, C e programmazione.
Cos’è la virtualità
L’informatica dal nostro punto di vista è “a strati”: linguaggi che permettono di astrarre il livello attuale e fornire qualcosa al livello superiore.
A noi informatici non interessa l’implementazione hardware di un sistema di elaborazione.
Qualcosa che si adatta perfettamente a sostituire un X lo chiameremo X Virtuale.
Una macchina virtuale è capace di parlare il linguaggio di una macchina reale:
- il linguaggio della sua instruction set → processore
- serve un sistema di emulazione della memoria con cui il processore dialoga.
- occorre ricreare la parte del linguaggio che rappresenta i bus di comunicazione tra periferiche.
Se siamo in grado di ricreare correttamente la macchina, la macchina non si accorgerà di essere virtuale.
Per noi la memoria è qualcosa che risponde a due comandi fondamentali: READ e STORE.
Possiamo ricreare queste operazioni e unire insieme memoria fisica con operazioni virtuali, ricreando la memoria virtuale.
Ci saranno sistemi virtuali, reti virtuali, ecc…
Efficacemente?
Un emulatore è un programma che emula il comportamento di qualcosa, un programma capace di apparire esattamente come qualcos’altro.
Come la macchina virtuale? No, emula e fa le cose dell'oggetto che emula, ma manca la parola efficacemente.
Il simulatore non fa le cose che fa l’oggetto simulato, appare solo che faccia le sue operazioni.
Con un simulatore di volo non si va in vacanza.
Icaro aveva ricreato un emulatore di volo.
Un emulatore è una macchina virtuale? Dipende dallo scopo.
Se la virtualità non si crea per emulazione, come si crea? Si crea trovando il modo di inserire nel sistemi dei supporti che ci aiutino a creare la virtualità senza simulazione.
La RAM simulata non è altro che memoria secondaria. → no virtualità.
MMU ci aiuta a simulare la memoria virtuale.
Nei sistemi Intel è presente VTX, ovvero supporti per creare sistemi virtuali. Per le operazioni di processore e memoria il sistema lavora come se non fosse in una macchina virtuale. Quando questi due non bastano, si delegano le operazioni alla macchina reale.
L’utente vuole da questa entità virtuale un servizio. La nostra macchina virtuale è efficace se il servizio non ha differenze dal quello fornito da una macchina reale.
Virtual Square
Cos’è? Davoli dice “non lo so”.
Nasce per dare un marchio ad una serie di progetti, oggi è un contenitore di progetti o laboratorio internazionale che porta avandi idee di progetti.
Internazionale perchè nel corso degli anni le persone che hanno partecipato al progetto hanno aggiunto codice e idee che li ha portati a lavorare in giro per il mondo, ma restando collegati a Virtual Square.
I progetti portati avanti sono tanti, le idee non vengono da sole.
I capisaldi sono la virtualizzazione di sistemi e di reti.
Tutti i progetti del 2014 sono nelle repo Debian ufficiali.
Quest’anno vorrebbe fare il salto e portare la realtà dei progetti attuali ad essere fruibile al mondo.
Questo è un corso ma non è un esame. Il voto si baserà su un progetto (come riporta il nome del corso).
Modalità di lavoro
Lezione, editor condiviso, il wiki, gruppo telegram e bot telegram.
Come esercizio aggiuntivo potremmo provare a diventare Debian maintainer.
VDE: Virtual Distributed Ethernet
Uno dei cavalli di battaglia di Virtual Square, rete ethernet virtuale.
L’ethernet è la rete più comune nell’ambito locale, ha tantissime implementazioni (fili di rame, fibra ottica, diverse velocità). Il comune denominatore di tutto questo (ciò che fa di una ethernet una ethernet) è il livello 2, ovvero il formato del pacchetto, i primi 14 byte. Se riusciamo a ricreare una rete virtuale possiamo interamente sostituire una rete fisica.
ifconfig è il vecchissimo metodo utilizzato per configurare l’IP di un sistema.
Macchine virtuali parziali
A differenza di una macchina virtuale totale si può virtualizzare solamente una parte del sistema (ad esempio solamente la rete, ignorando l’implementazione del file system). Non richiede l’intero boot. Questo è possibile tramite le systemcall.
Esperimento in classe: Emulato un file system e fatto un mount all’interno. Dall’esterno non è visibile.
Qemu è una macchina virtuale che funziona tramite compilazione dinamica. Ha sistema di caching che ricorda le istruzioni recentemente eseguite. Tutti i sistemi di sviluppo per mobile utilizzano Qemu. Permette di utilizzare diverse implementazioni dell’architettura rispetto alla macchina ospitante.
Conclusioni
Molte implementazioni di virtualizzazione.
Proseguimento del corso: mostrare tutti gli esperimenti sulla virtualizzazione, prima come si usano e poi come sono stati implementati.