Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


appunti sulla visualizzazione, Dispense di Elementi di Informatica

appunti presi a lezione riguardo alla virtualizzazione software e hardware

Tipologia: Dispense

2019/2020

Caricato il 28/11/2020

martinabba
martinabba 🇮🇹

4.4

(13)

22 documenti

1 / 4

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
VIRTUALIZZAZIONE
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
compilatore 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
pf3
pf4

Anteprima parziale del testo

Scarica appunti sulla visualizzazione e più Dispense in PDF di Elementi di Informatica solo su Docsity!

VIRTUALIZZAZIONE

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