Title: Sistemi Operativi / 2 - Architettura / 02 - Kernel e macchine virtuali

Azioni di cui il sistema operativo è responsabile sui processi

Gestione della memoria principare

Q: Gestione della memoria secondiaria
A: In primis deve garantire l'accesso come array di byte continui.

Q: Gestione del filesystem
A: Un filesytem è molto di più che solo la rappresentazione della memoria secondaria (es la dir proc o dev )

Q: Struttura dei sistemi operativi, free-dos, unix e a strati
A: # Free-DOS
Usa il codice del bios (negli altri sistemi lo utilizzano soltanto per fare il boot) ma un tempo molte funzionalità di base erano compito del BIOS.
Il programma applicativo, simula il multitasking con il TSR
# Unix
sono kernel monolitici, nel senso che tutto il sistema operativo è un unico programma senza protezioni interne
# Sistemi con struttura a strati
La struttura a strati è rimasto molto teorico poichè:
- tendono ad essere meno efficienti
- occorre studiare accuratamente la struttura dei layer: tutti le funzionalità previste da un layer devono basarsi sui layer inferiori, non sempre facile come limitazione da superare
# Politiche e meccanismi
(i cernel micro in modalità kernel si utilizza per fare solo i meccanismi, mentre la politica sono fatti tramite richiesta kernel (user mode))
## MacOS <=9

Q: Tipi di kernel
A: ## Kernel Monolitici
Anche i moduli del kernel in linux quando vengono compilati vengono messi nello stesso eseguibile e nello stesso spazio (del kernel), quindi se uno crolla crollano tutti.
## Microkernel
I micro kernel, rimuovono dal kernel le parti non essenziali e le spostano come processo utente.
Di solito infatti si limita a creare le funzionalità minime per gestire la memoria e la comunicazione tra i processi .
Sono molto sicuri essendo che se crasha un il failsystem/driver viene fermato il processo e basta
i processi utente possono mandare messaggi solo a il livello sotto.
## Kernel ibridi
Il micro kernel (avendo appeling commerciale) alcune aziende l'hanno incominciato a sviluppare
Un esempio è Windows NT
## Kernel a strati o con struttura semplice
È un esempio di sistemi a struttura semplice tipo DOS, o unix che sono strutturati tramite un insieme di strati.
I sistemi strutturati sono quelli in cui i livelli più bassi creano delle interfacce (astrazioni) per quelli superiori, questo è stato a livello teorico molto acclamanto (per esempio da dijikstra) ma erano meno efficienti.
i sistemi operativi moderni tendono ad avere meno strati, per avere una maggiore efficienza.

Q: Macchine virtuali
A: Hypervisor (programma che emula un sistema operativo)
Si possono anche emulare architetture differenti, ma molte volte quesa emulazione risulta molto lenta.
Nel caso si voglia utilizzare la stessa archietettura, i processori ora hanno istruzioni speciali
Le VM possono essere sia a livello processo che a livello di sistema
Processo (quem) e di sistema (quem-sys)
quem può essere utilizzata a processo e traduce gli eseguibili systemcall etc. su un processo che emula una cpu.
Mentre quem-sys può emulare attraverso altri hypervisor (come ad esempio kvm)
## Istruzioni per la virtualizzazione
Il processore ha certe istruzioni (per i processori intel vmx) come:
- vmxon/vmxoff: spengono e accendono
- vmlaunch/vmreturn: servono per fare gli "interrupt" all'hypervisor
- vmx enter
esattamente come l'interrupt se succedono alcune operazioni il processore chiama l'hypervisor per gestire la situazione

Q: Code dei processi
A: la coda ready è quella dove il vengono tenuti tutti il processi che stanno aspettando di essere eseguiti

Q: Gerarchia di processi
A: demoni sono processi in background
getty è il processo che serve per gestire il terminale

Caratteristiche dei processi