Anteprima
Vedrai una selezione di 6 pagine su 22
Sistemi di virtualizzazione Pag. 1 Sistemi di virtualizzazione Pag. 2
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Sistemi di virtualizzazione Pag. 6
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Sistemi di virtualizzazione Pag. 11
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Sistemi di virtualizzazione Pag. 16
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Sistemi di virtualizzazione Pag. 21
1 su 22
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

CPU.

Sistemi di Virtualizzazione 8

I bus sono suddivisi in linee, nelle quali "passano" dati, indirizzi e informazioni di controllo.

Tipi di bus:

Bus per le comunicazioni tra CPU e memoria: lunghezza corta ma velocità alta.

Bus di tipo I/O: lunghezza più ampia e dunque più lenti.

Dispositivi di I/O

Un dispositivo di I/O è formato da:

dal dispositivo vero e proprio (stampante, mouse, disco, ecc…).

il controllore del dispositivo, che funge da interfaccia per tutte le operazioni.

I controllori posso avere dei registri:

status, memorizza lo stato della periferica (idle, busy, down, ...).

control, memorizza il comando da eseguire.

data-in, memorizza i dati da I/O.

data-out, memorizza i dati dal dispositivo di I/O.

Per richiedere un'operazione di I/O, la CPU deve preparare il contenuto da caricare nei registri del

controllore, legge il bit di status (il busy bit).

I dispositivi di I/O sono molto più lenti del processore, tuttavia esistono diverse tecniche per gestirli:

Controllo Programmato

È un metodo in cui il processore è pienamente coinvolto nella gestione dell’operazione di I/O richiesta.

Il processore, dopo aver preparato il controller ad eseguire l’operazione di I/O, interroga continuamente

il controller per verificare l’esito dell’operazione. Quando l'operazione è completata, il processore

trasferisce i dati (nel caso di un'operazione di input) o esegue una nuova istruzione. Il ciclo eseguito

dal processore in attesa che l'operazione venga eseguita viene chiamato attesa attiva.

Il controllo programmato è molto semplice ma anche molto costoso. Il processore spreca tempo nel

ciclo di attesa attiva, perché non svolge nessun'altra attività oltre a osservare lo stato del dispositivo.

Polling

Con questa tecnica il processore, durante i cicli di attesa attiva, controlla gli altri dispositivi di I/O. Se un

dispositivo necessita di attenzioni, il processore soddisfa la sua richiesta.

Interrupt

Gli interrupt (già visti in sistemi operativi mod. A) costituiscono probabilmente la soluzione migliore. Per

evitare che la CPU sprechi tempo essa controlla la linea degli interrupt al termine di ciascuna

operazione. In questo modo evitiamo una attesa attiva, ottimizzando la gestione della CPU (vedi

paragrafo sugli interrupt in SO mod. A). In sostanza, quando il controller termina l’operazione manda

una richiesta di interrupt; il processore controlla la linea di richiesta degli interrupt e, se presente, lo

gestisce con una routine ecc…

Sistemi di Virtualizzazione 9

Gli eventi di I/O sono interrupt di tipo mascherabile.

Direct Memory Access (DMA)

Con l’uso degli interrupt il processore è comunque molto impegnato nel trasferire i dati tra i dispositivi

I/O e la memoria.

Il DMA e una tecnologia che permette ai dispositivi di I/O di accedere direttamente alla memoria

principale del computer senza passare per la CPU. Questo migliora le prestazioni del sistema,

consentendo alla CPU di concentrarsi su altre attività di elaborazione ed è fondamentale per il

funzionamento efficiente di molte applicazioni e periferiche hardware.

Tipi di dispositivi

I vari dispositivi I/O possono essere distinti in tre classi differenti: dispositivi a blocchi, dispositivi a

carattere e dispositivi di rete.

Dispositivi a blocchi: i dispositivi a blocchi sono dispositivi che trasferiscono dati in blocchi fissi di

dimensione specifica, tipicamente da 512 byte a diversi kilobyte. Questi dispositivi sono utilizzati

per l'accesso casuale ai dati, il che significa che puoi leggere o scrivere blocchi di dati in qualsiasi

ordine. Esempi comuni di dispositivi a blocchi includono: dischi rigidi (HDD), unità a stato solido

(SSD), CD-ROM, Memorie USB.

Dispositivi a carattere: i dispositivi a caratteri, invece, trasferiscono dati come un flusso continuo

di byte, uno alla volta. Sono ideali per l'accesso sequenziale ai dati. Esempi di dispositivi a caratteri

includono: tastiere, mouse, stampanti.

Questi dispositivi non supportano l'accesso casuale come i dispositivi a blocchi, il che significa che

i dati vengono elaborati in modo sequenziale

Dispositivi di rete: i dispositivi di rete sono utilizzati per gestire la comunicazione tra computer

attraverso una rete. Questi dispositivi inviano e ricevono pacchetti di dati tramite protocolli di rete.

Esempi comuni di dispositivi di rete includono: schede di rete, modem, router e switch.

Virtualizzazione dell’I/O

L’I/O in un certo senso è più semplice da gestire. In un ambiente fisico (non virtualizzato) il sistema

operativo manda richieste I/O ai dispositivi di archiviazione e, per comunicare con il controller di quel

dispositivo (disco), il SO utilizza i driver SCSI.

In un ambiente virtualizzato cosa succede? Il SO della VM manda richieste I/O (come detto sopra),

all’interno della VM, il SO utilizza effettivamente i driver SCSI e crede di comunicare con il controller

fisico; in realtà quello che vede è un’astrazione (un emulatore) che l’hypervisor usa per inviare e

ricevere richieste di I/O. L’emulatore inserisce la richiesta in una coda (di storage in questo caso), che

raccoglie tutte le richieste I/O (di storage) di tutte le macchine virtuali presenti sull’host. Questa

richiesta viene successivamente passata al driver di storage dell’hypervisor che comunica

direttamente con il controller fisico di storage. Il controller esegue finalmente la richiesta e i blocchi di

dati seguono il percorso inverso per restituire alla VM corretta il risultato.

Sistemi di Virtualizzazione 10

Il Citrix Hypervisor (Xen Hypervisor - tipo 1) si comporta in modo diverso invece: abbiamo una

macchina virtuale chiamata “Contro Domain” che contiene dei moduli che comunicano direttamente

con i dispositivi I/O. Il componente che prende in carico la richiesta del driver che viene dal guest è il

Control Domain che comunica direttamente con l’host. L’hypervisor in questo modo viene bypassato.

Provisioning dello storage

Esistono due metodi per gestire il provisioning (ovvero come la macchina virtuale si prende lo storage

che dovrà utilizzare): thick provisioning e thin provisioning.

Quando configuriamo il disco della macchina virtuale e per esempio chiediamo 100GB, utilizzando

il thick provisioning vengono presi immediatamente dallo storage dell’host e non sono più

disponibili ad esso (disponibili solo dalla VM). Il principale lato negativo è che ovviamente tutta

quella parte del disco è presa a priori, quindi rischio di avere memoria in eccesso che non mi serve.

Si divide a sua volta in Lazy Zeroed e Eager Zeroed: nel primo caso i 100GB non vengono

inizializzati subito ma man mano che io utilizzo la memoria precedentemente allocata, riferendosi ai

Sistemi di Virtualizzazione 11

blocchi e mettendo gli 0 su tutti i blocchi. Nel secondo caso i 100GB vengono inizializzati subito,

assegnando i blocchi. In entrambi i casi ovviamente quei 100GB sono occupati e non più disponibili

dall’host.

L’altro approccio è il thin provisioning. Configuro la macchina virtuale e chiedo 100GB ma viene

allocata man mano che mi serve, senza avere 100GB immediatamente occupati. E’ una sorta di

ottimizzazione della memoria.

I Driver

Il driver è il software che inizia a dipendere dal dispositivo stesso. Il driver fa parte del kernel del

sistema operativo. Solitamente non nasce con il sistema operativo, solitamente sono dei moduli caricati

esternamente. Il driver va a settare i vari registri. Intercetta una chiamata di sistema (o per meglio dire,

una funzione) effettuata dal device independent operating system software.

Solitamente il sistema operativo fornisce un'interfaccia che, lo sviluppatore del driver, deve

implementare per far funzionare il dispositivo.

Loadable Kernel Module (LKM)

I LKM sono dei moduli caricati nel kernel run-time, caratterizzati dall'estensione .

.ko

Vengono utilizzati per:

per i dispositivi;

per il file system;

per le chiamate di sistema;

per la rete.

permette di inserire un modulo nel kernel, a patto che sia compilato e salvato in una cartella

modprobe

particolare: per farlo si usa .

sudo modproble <nome_modulo>

#include <linux/init.h>

#include <linux/module.h>

MODULE_AUTHOR("Antjuan");

MODULE_LICENCE("GPL");

static int __init hello_init(void) {

printk(KERNEL_INFO "Module loaded successfully.");

return 0;

}

module_init(hello_init);

Virtual Box

Sistemi di Virtualizzazione 12

# Step 1: Create a new virtual machine

VBoxManage createvm --name "<VM_NAME>" --register

# Step 2: Configure virtual machine settings

VBoxManage modifyvm "<VM_NAME>" --memory 2048 --cpus 2 --nic1 nat

# Step 3: Create and attach virtual hard disk

VBoxManage createhd --filename "<PATH_TO_VM_DISK>.vdi" --size 20000

VBoxManage storagectl "<VM_NAME>" --name "SATA Controller" --add sata --controll

VBoxManage storageattach "<VM_NAME>" --storagectl "SATA Controller" --port 0 --d

# Step 4: Attach installation ISO (if needed)

VBoxManage storageattach "<VM_NAME>" --storagectl "SATA Controller" --port 1 --d

# Step 5: Start the virtual machine in headless mode

VBoxManage startvm "<VM_NAME>" --type headless

# ----------------------------------------------------------------------- #

# Set Port Forwarding for VM in NAT Mode

# In this example, port 2222 on the host machine is forwarded to port 22 on the

VBoxManage modifyvm "<VM_NAME>" --natpf1 "guestssh,tcp,,2222,,22"

# Creating a VM starting from an VirtualBox Image

VBoxManage registervm "<PATH_TO_VBOX_FILE>.vbox"

Sistemi distribuiti

I sistemi distribuiti sono un insieme di macchine, processori, o host debolmente accoppiati (ogni host è

molto indipendente rispetto agli altri) e connessi tra loro tramite una rete.

Configurazioni

Le configurazioni principali dei sistemi distribuiti sono:

Client-Server: Il client richiede il servizio che il server fornisce.

Peer-to-Peer: Non ci sono ruoli fissi tra i nodi; ogni nodo può fungere sia da client che da server.

Hybrid: Combinazione di client-server e peer-to-peer.

La comunicazione avviene tramite messaggi.

Vantaggi dei sistemi distribuiti

I sistemi distribuiti nascono dall'esigenza di:

Sistemi di Virtualizzazione 13

Condividere risorse: Condividere file o utilizzare hardware in modo remoto.

Aumentare la velocità di computazione: Attraverso il load balancing e la parallelizzazione dei

processi.

Affidabilità: Assicurare che il sistema continui a funzionare anche se un nodo dovesse cadere.

Sistemi operativi distribuiti

Rete

Gli utenti sono consapevoli di avere a che fare co

Dettagli
Publisher
A.A. 2023-2024
22 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher just_antov di informazioni apprese con la frequenza delle lezioni di Sistemi di virtualizzazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Messina o del prof Catalfamo Alessio.