1. Introduzione alle Architetture dei Sistemi Operativi
Il modo in cui un sistema operativo organizza le proprie funzioni all'interno del kernel definisce la sua architettura strutturale. Le due filosofie storiche e contrapposte principali sono il Kernel Monolitico e il Microkernel.
2. Il Kernel Monolitico
Nell'architettura monolitica, tutti i servizi di base del sistema operativo (gestione dei processi, memoria, file system, driver di periferica e stack di rete) risiedono ed eseguono all'interno dello stesso grande spazio di indirizzamento in modalità privilegiata ($\text{Ring 0}$).
- Vantaggi: Elevatissime prestazioni e velocità di comunicazione tra i vari sottosistemi, poiché non vi è overhead dovuto al cambio di contesto ($\text{Context Switch}$).
- Svantaggi: Bassa modularità; un bug o un errore in un driver di periferica può corrompere l'intera memoria del kernel e causare il blocco totale del sistema (famosa schermata blu o kernel panic). Esempi: Linux, MS-DOS.
3. L'Architettura Microkernel
Il approccio Microkernel riduce il codice eseguito in modalità privilegiata allo stretto indispensabile (gestione basilare dei thread, IPC - Inter-Process Communication e gestione della memoria virtuale). Tutti gli altri servizi (driver, file system, server di rete) vengono spostati nello spazio utente ($\text{Ring 3}$) come normali processi isolati.
- Vantaggi: Elevata stabilità, sicurezza e modularità. Se un driver di periferica si blocca, il processo viene semplicemente riavviato senza compromettere il kernel. Esempi: Minix, QNX, L4.
- Svantaggi: Minori prestazioni complessive a causa del continuo scambio di messaggi e dei cambi di contesto tra i server in spazio utente e il microkernel.
4. Simulatore di Architettura del Kernel
Seleziona un'architettura di sistema per analizzarne il comportamento operativo, la gestione degli errori e l'efficienza di comunicazione.