Come funziona Windows - Il Kernel - Michele Pelosi
Come funziona Windows - Il KernelCon questo articolo apriamo una nuova serie dedicata al funzionamento interno di Windows.
Partiamo dal componente più profondo e meno visibile di tutti: il kernel, il cuore del sistema operativo.
Cos'è il kernel - premessa
Il kernel è il livello software che sta a diretto contatto con l'hardware del computer: processore, memoria RAM, dischi, periferiche.
Il suo compito è fare da mediatore tra le risorse fisiche della macchina e i programmi che l'utente esegue, decidendo chi può usare cosa e in che momento.
Senza il kernel, ogni applicazione dovrebbe sapere come parlare direttamente con ogni singolo componente hardware: un caos ingestibile. Il kernel astrae questa complessità e offre ai programmi un'interfaccia coerente e sicura.
L'architettura del kernel di Windows: NT
Windows si basa su un kernel chiamato NT (New Technology), introdotto per la prima volta con Windows NT 3.1 nel 1993 e ancora oggi alla base di tutte le versioni moderne, incluse Windows 10 e 11.
Il kernel NT ha un'architettura definita ibrida: non è un kernel puramente monolitico (dove tutto gira in un unico blocco a stretto contatto con l'hardware) né un microkernel puro (dove quasi tutto viene spostato fuori dal kernel per motivi di stabilità).
È una via di mezzo pensata per bilanciare prestazioni e modularità, mantenendo alcune componenti critiche vicine all'hardware e isolando altre in strati separati.
Le componenti principali
Il kernel NT è organizzato in diversi sottosistemi, ciascuno con un compito preciso:
- HAL (Hardware Abstraction Layer): nasconde le differenze tra i vari tipi di hardware, così il resto del sistema non deve preoccuparsene.
- Kernel vero e proprio (ntoskrnl.exe, parte "kernel"): gestisce lo scheduling dei processi (cioè decide quale programma usa il processore e per quanto tempo) e la sincronizzazione a basso livello.
- Executive: un insieme di servizi che si occupano di gestione della memoria, gestione dei file e dell'I/O, sicurezza, gestione dei processi e comunicazione tra processi.
Questa divisione permette a Windows di aggiornare o correggere singole parti del sistema senza dover riscrivere l'intero kernel.
Kernel mode e user mode
Un concetto chiave per capire la sicurezza e la stabilità di Windows è la distinzione tra due modalità di esecuzione:
- Kernel mode: qui girano il kernel stesso e i driver di dispositivo, con accesso pieno e diretto all'hardware e alla memoria di sistema.
- User mode: qui girano le applicazioni normali, incluse molte parti dell'interfaccia grafica, con accesso limitato e controllato.
Questa separazione è una barriera di sicurezza fondamentale: se un programma in user mode si blocca o commette un errore, nella maggior parte dei casi non porta al crash dell'intero sistema, perché non può toccare direttamente le risorse critiche riservate al kernel mode.
Conclusioni
Il kernel NT porta con sé oltre trent'anni di storia, e questo genera diversi problemi concreti:
-Compatibilità come zavorra, perché deve far funzionare software vecchio di decenni tramite strati di emulazione e API legacy che appesantiscono l'architettura invece di poterla ripulire;
-Architettura monolitica cresciuta nel tempo, con funzionalità come i driver grafici spostate in kernel mode per prestazioni, che però aumentano superficie di attacco e rischio di BSOD causati da driver terzi con accesso privilegiato;
-Modello dei driver datato (WDM/WDF), che a differenza di approcci più moderni non isola i driver in user space, lasciando il sistema esposto a bug con accesso diretto e privilegiato;
-Overhead rispetto a sistemi "puliti", perché kernel più recenti o minimalisti non si trascinano dietro decenni di sottosistemi legacy, telemetria e strati di sicurezza aggiunti in seguito, cosa che Windows compensa solo con hardware più potente, richiedendo upgrade costanti;
-Sicurezza "patchata" invece che nativa, con protezioni come isolamento dei processi e virtualization-based security aggiunte sopra un'architettura non progettata fin dall'inizio con la sicurezza come priorità;
Vedi anche:
Come funziona Linux - Il Kernel (ancora da pubblicare)
Commenti (0)
Nessun commento ancora. Sii il primo a scrivere!