poniamo di avere una macchina A, se io riesco a creare un servizio B diverso da A ma posso usare B al posto di A allora B si chiama macchina virtuale

La def di virtuale dipende dallo scopo

per essere una macchina virtuale deve parlare lo stesso linguaggio della macchina reale La jwm e la wm di python non centrano niente con questa def di wm 20260226_2026-02-26_15-24-44

Vantaggi:

  • consentono di far coesistere so differenti (es progettare app per telefoni) Svantaggi:
  • soluzione piu lenta di una reale (le istruzioni hw di virtualizzazione)
  • difficile condividere risorse

ABI vs ISA

20260226_2026-02-26_15-28-38

imma dx: virtualizzazione di sistema immagine a sx: virtualizzazione a liv di processo

20260226_2026-02-26_15-33-39

Esempi di VM Quemu e' una piattaforma di transimulation Qemu: PMV o SVM

  • cross emulation platform
  • dynamic translation

Qemu + KVM: SVM

  • usa le unita di io virtuali QEMU
  • usa le istruzioni per virtualizzazione: intel VT-x e AMD SVM (velocita' praticamente uguali)

quemu non virtualizza ma traduce. Taduce brani di codice per un processore in brani per un altro processore (non traduce tutto il codice ma pezzi che poi salva in cache)

Velocita' 10-15 volte piu lento

quando si avvia un installazione del so viene avviato un piccolo linux (se devo installare linux)che serve solo per l'installazione

Namespace

I namespace isolano le risorse in modo che i processi posano vedere la propria versione del sistema. Ogni namespace isola un tipo di risorse. Es:

  • PID namespace → separate process trees
  • NET namespace → separate network interfaces and routing
  • MNT namespace → separate filesystem mount points
  • UTS namespace → separate hostname
  • IPC namespace → separate shared memory/message queues
  • USER namespace → separate user IDs

System call specifiche

  • clone: crea un nuovo processo, con opportune flag vengono creati nuovi namespace e il processo creato fara parte di questi namespace (e.g. CLONE_NEWNET, CLONE_NEWPID…)
  • Setns: connette il processo chiamante a namespace esistenti
  • Unshare: muove il processo chiamante in un nuovo namespace