


Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
appunti presi a lezione riguardo alla virtualizzazione software e hardware
Tipologia: Dispense
1 / 4
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



possibilità di creare un programma che gira ovunque ↝ principio di questa tecnologia un programma viene progettato per un determinato processore non può girare su un elaboratore che ha un linguaggio macchina differente
il linguaggio macchina è il linguaggio del microprocessore un programma eseguibile è costituito da una sequenza di istruzioni macchina che vengono interpretate ed eseguite dal microprocessore un programma usa la codifica binaria su diverse piattaforme hardware è necessario sviluppare diverse versioni (porting), ciascuna specifica per il processore dove l’applicazione dovrà essere utilizzata
MODALITà DI SVILUPPO DELLE APPLICAZIONI ● scrittura diretta in linguaggio macchina i primi elaboratori non avevano un sistema operativo ed non erano disponibili linguaggio di programmazione ad alto livello la modalità di sviluppo che veniva usata era in linguaggio macchina ↷ approccio mlt complesso ● utilizzando il linguaggio assembly ↪ consente una scrittura più agevole utilizza delle codifiche testuali come alternativa alle sequenza di bit consente l’utilizzo di etichette per specificare gli indirizzi di memoria e i registri assembly è comunque umanamente poco immediata implica la scrittura si lunga sequenza di istruzioni ● utilizzando linguaggio ad alto livello umanamente più comprensibili e compatti ha semplificato lo sviluppo delle applicazioni però: sono poco comprensibili al microprocessore per cui è necessario un programma detto compilator e che traduca le iscrizioni ad alto livello in linguaggio macchina (linguaggio a basso livello) ● utilizzando le api del sistema operativo il sistema operativo ha un ruolo indispensabile nello sviluppo delle applicazioni ci sono dei servizi che sono disponibili grazie a funzioni API che possono essere utilizzati dalle applicazioni senza che sia necessario sviluppare un determinato codice ↝ permette di semplificare lo sviluppo delle applicazioni API = linguaggio di programmazione di un sistema operativo ↪ controllano gli accessi alle risorse hardware e impongono direttive che garantiscono un elevato livello di sicurezza e la stabilità del sistema es. keylogger = dispositivo per registrare tutta l’attività in input dell’utente ↓
questo per non essere rilevato dal sistema operativo deve comunicare con il livello hardware saltando ogni controllo quindi un’applicazione spia deve aggirare le protezioni del sistema operativo deve avviarsi alla fase di boot e modificare le procedure di sicurezza
il sistema operativo fa da intermediario regola l’accesso alle risorse dell’hardware
la presenza delle API rende un'applicazione incompatibile per ambienti differenti (windows non può avere un’ applicazione nativa per MAC OS) ↳ questo ha portato problemi alla portabilità di un’applicazione per questo motivo per aumentare la diffusione di un’applicazione è quello di implementare su ogni piattaforma che è in grado di supportare questa scelta comporta però costi elevati
scopo della virtualizzazioni è quello di limitare i corti per avere delle applicazioni portabili + evitando di dover scrivere per ogni sistema un’applicazione nativa
ogni piattaforma deve supportare un substrato detto framework (virtualizzazione) che mette a disposizione una sorta di codice macchina virtuale (bitcode) ↷ le app create così possono essere usate da sistemi diversi
il bitcode può essere: ● la riproduzione di un codice macchina reale specifico di una determinata CPU effettivamente esistenza (visualizzazione hardware) ● un linguaggio macchina inventato (virtualizzazione software)
➜ VIRTUALIZZAZIONE HARDWARE ↳ il bitcode = linguaggio macchina di una CPU reale presente sul mercato ↓ sono particolari software che emulano un pc virtuale sul pc fisico ↴ consente l’esecuzione di applicativi nativi, progettati per sistema operativi differenti da quello installato sulla macchina fisica che ospita il visualizzatore le applicazioni non native vengono eseguite all’interno di una finestra, dove è evidenza stia girando un altro sistema operativo ( OS Guest ) in alcuni casi il software di visualizzazione si integra con il sistema operativo ospitante ( OS HOST ) fino a rappresentare applicazioni scritte per altri sistemi operativi come se fossere applicazioni native del computer es. di programmi di visualizzazioni hardware sono: QEmu, Virtualbox, Microsoft Virtual Mc, Parallel Desktop e VMWare
con la virtualizzazione software l’applicazione viene scritta una sola volta e eseguita su tutte le piattaforme → ho un risparmio economico perchè scrivo una sola volta l’applicazione e la faccio girare ovunque ( portabilità )
il concetto di virtualizzazione software può essere applicato in ambito WAN il browser rappresenta il virtualizzatore software → garantisce il front-end applicativo JavaScript / CSS / HTML usano il bitcode → amministra il backend ↓ la funzionalità del back-end vengono distribuite ai client tramite gli endpoints che mettono a disposizione le API
utilizzo applicazioni che utilizzano una potenza di calcolo che viene da altre fonti (es telefono) ↳ creo applicazioni potenti per aumentare i livelli di servizio