Riavviare Windows ieri e oggi: da Windows 95 a Windows 11 cosa è cambiato

Un’analisi tecnica sull’evoluzione del riavvio di Windows, dai primi fast restart basati su DOS fino ai meccanismi moderni di Windows 10 e 11.

Il riavvio di Windows è spesso percepito come un’operazione banale, un semplice passaggio tra una sessione di lavoro e la seguente. In realtà, dietro a quel gesto apparentemente banale si nasconde una stratificazione di meccanismi complessi, compromessi progettuali e modalità operative profondamente diverse tra loro. Non tutti i riavvii sono uguali: alcuni sono lenti ma “educati”, altri rapidi ma incompleti, altri ancora brutali e pensati per situazioni di emergenza. Capire cosa significhi davvero riavviare velocemente Windows richiede di andare oltre l’interfaccia grafica e di osservare come il sistema operativo gestisce applicazioni, servizi, kernel e stato dell’hardware.

Le radici del riavvio veloce di Windows svelate da Raymond Chen

Con un post tecnico pubblicato sul suo blog, Raymond Chen, storico sviluppatore Microsoft e uno dei massimi conoscitori dell’architettura interna di Windows (ha lavorato per decenni occupandosi di compatibilità, API e comportamento del sistema), ci riporta a quando Windows non era ancora un sistema autonomo, ma un ambiente grafico che viveva sopra DOS.

Chen ha spiegato come già in Windows 3.x e Windows 95 esistesse una forma di “riavvio rapido” ottenuta senza uno spegnimento reale della macchina. Tenendo premuto MAIUSC durante il riavvio, Windows non effettuava un reboot completo, ma tentava di riavviare solo l’ambiente grafico, ricostruendo il proprio stato sopra un sistema DOS già attivo.

Quella soluzione, fragile e fortemente dipendente dalla disposizione della memoria e dal corretto comportamento dei driver, mostrava però un’idea moderna: ridurre al minimo le operazioni inutili per tornare il più rapidamente possibile a un sistema operativo funzionante. Da allora l’architettura di Windows è cambiata radicalmente, ma l’obiettivo è rimasto lo stesso. Oggi il “riavvio veloce” assume forme diverse, basate su kernel NT, gestione avanzata dell’alimentazione e ibernazione parziale, e risponde a esigenze di affidabilità e sicurezza molto più stringenti.

Dai riavvii imperfetti di Windows 95 alle architetture moderne

Come spiegato da Chen, il riavvio veloce nelle versioni Windows 3.x e Windows 9x non era un reboot nel senso moderno del termine, ma l’effetto collaterale di un percorso di spegnimento molto specifico, attivato passando il flag EW_RESTARTWINDOWS alla funzione a 16 bit ExitWindows. Questa API non richiedeva un reset dell’hardware: il kernel di Windows a 16 bit veniva terminato, seguito dallo shutdown del Virtual Memory Manager a 32 bit, dopodiché la CPU veniva riportata in real mode.

A quel punto il controllo tornava a win.com, il bootstrap loader DOS, che riceveva un segnale speciale equivalente a una richiesta esplicita di “riavviare Windows in modalità protetta”. Se le condizioni erano favorevoli, win.com saltava direttamente al codice di inizializzazione della modalità protetta, rilanciando l’interfaccia grafica senza passare per il BIOS o la procedura POST all’avvio.

La modalità protetta indicava la modalità operativa della CPU in cui Windows poteva usare memoria estesa a 32 bit, multitasking preemptive e una forma di protezione della memoria, distinguendosi dal real mode di DOS, che era limitato a 640 KB e privo di isolamento tra programmi.

Il successo della procedura di riavvio dipendeva però da vincoli estremamente rigidi. Poiché i file .com occupavano tutta la memoria convenzionale disponibile al caricamento, win.com doveva rilasciare manualmente lo spazio non utilizzato per garantire un unico grande blocco contiguo destinato a Windows in modalità protetta. Qualsiasi frammentazione causata da driver o programmi residenti rompeva questo presupposto, rendendo impossibile il “riavvio veloce” e costringendo il sistema a un reboot completo.

Inoltre, l’assenza di un vero modello di isolamento faceva sì che driver mal progettati potessero lasciare lo stato dell’hardware o della memoria in condizioni incoerenti, spiegando perché riavvii rapidi consecutivi potessero portare a crash.

Cosa è cambiato con l’avvento della famiglia Windows NT

Nelle architetture Windows moderne, basate su NT, il vecchio approccio per la gestione del riavvio veloce è stato completamente abbandonato.

Non esiste più la funzione ExitWindows a 16 bit perché ovviamente non esiste più un ambiente DOS sottostante. Il kernel NT non può essere scaricato e ricaricato senza un vero reboot e il riavvio veloce è ottenuto tramite meccanismi concettualmente diversi, come l’ibernazione parziale del kernel (Fast Startup) o i riavvii forzati che bypassano la cooperazione delle applicazioni.

Il parallelismo con il passato è quindi solo concettuale: allora si cercava di risparmiare tempo riavviando solo l’ambiente Windows sopra DOS; oggi si riducono i tempi evitando alcune fasi di inizializzazione o di shutdown, ma su basi architetturali molto più robuste e controllate.

Anche nei sistemi più aggiornati della famiglia NT, come Windows 10 e Windows 11, quando l’utente richiede un riavvio, il sistema operativo avvia una sequenza orchestrata dal Session Manager (SMSS) e dal Service Control Manager.

In una prima fase, il sistema chiude la sessione utente: le applicazioni ricevono le notifiche di fine sessione e, se cooperano, rilasciano risorse e salvano lo stato. Successivamente, si passa all’arresto dei servizi in modalità user e kernel, secondo dipendenze ben definite.

A questo punto il sistema entra nella fase di shutdown del kernel, in cui sono sincronizzati i file system, svuotati i buffer di I/O e i driver portati in uno stato coerente. Solo dopo queste operazioni Windows invoca i meccanismi di riavvio a basso livello, passando il controllo al firmware tramite ACPI o, nei sistemi UEFI, direttamente al boot manager.

Cos’è Avvio rapido in Windows 10 e Windows 11

Le ottimizzazioni moderne intervengono sul flusso descritto al precedente paragrafo senza spezzarlo. C’è però una funzione di Windows che suscita forti dubbi. Si tratta di Avvio rapido (Fast Startup, in inglese), gestibile anche attraverso la storica finestra Opzioni risparmio energia.

Prima di proseguire, è fondamentale chiarire un punto spesso frainteso: Avvio rapido interviene esclusivamente nella fase di avvio successiva a uno spegnimento del sistema, non durante un riavvio. Quando si seleziona Riavvia, Windows esegue sempre un reboot completo del kernel, ignorando deliberatamente Avvio rapido (ne parliamo più avanti).

La distinzione riflette una scelta architetturale precisa: il riavvio deve riportare il sistema in uno stato pienamente reinizializzato, mentre Avvio rapido è pensato solo per accelerare l’avvio “a freddo”.

Breve guida al funzionamento di Avvio rapido

Con Avvio rapido, Windows non dispone un arresto completo del kernel: dopo aver terminato la sessione utente, il kernel e i driver sono condotti in uno stato consistente e ibernati sull’unità di memorizzazione locale.

Al successivo avvio, il bootloader ricarica questa immagine del kernel anziché ricostruirla da zero, saltando gran parte dell’inizializzazione. Nei riavvii forzati o di emergenza (ne parliamo più avanti), invece, Windows abbrevia drasticamente la fase user mode: i processi sono terminati senza attendere risposta e il sistema passa rapidamente alla fase kernel, privilegiando la continuità operativa rispetto alla pulizia della fase di arresto del sistema.

È importante sottolineare che Avvio rapido non è una componente obbligatoria dell’architettura NT, ma una scelta di ottimizzazione pensata soprattutto per i sistemi consumer. La sua attivazione privilegia la velocità percepita, assumendo che driver e firmware siano pienamente conformi al modello di gestione dell’alimentazione di Windows.

In contesti meno ideali, questa assunzione può venire meno: il kernel ripristinato dall’immagine di ibernazione eredita lo stato precedente dei driver, anziché ricostruirlo da zero, e questo può amplificare comportamenti anomali latenti che un riavvio completo eliminerebbe immediatamente. Ecco quindi che premendo Windows+R, quindi digitando powercfg.cplSpecifica comportamento pulsanti di alimentazione e infine cliccando su Modifica le impostazioni attualmente non disponibili, si può tornare a un modello di avvio in cui ogni inizializzazione avviene ex novo e ogni driver è costretto a riportare l’hardware in uno stato “di base”.

Il riavvio “normale” di Windows e i margini di ottimizzazione

Quando si seleziona Riavvia dal menu Start, Windows segue il percorso di shutdown più conservativo e “gentile” possibile. Il sistema tenta innanzitutto di chiudere in modo ordinato la sessione utente, notificando alle applicazioni l’imminente terminazione tramite i messaggi di fine sessione; solo dopo aver ricevuto risposta (o dopo aver atteso un certo tempo) procede con la chiusura dei processi.

In parallelo, il Service Control Manager arresta i servizi secondo un ordine determinato dalle dipendenze, dando loro modo di completare operazioni ancora in sospeso come scritture su disco o rilascio di risorse. Solo al termine di queste fasi Windows passa allo shutdown del kernel.

A livello di registro di sistema esistono alcuni parametri che influenzano i tempi di attesa della procedura e che, se ridotti con cautela, possono velocizzare il riavvio. Tra i più noti ci sono HungAppTimeout, che definisce per quanto tempo Windows attende una risposta da un’applicazione in esecuzione e WaitToKillAppTimeout, che stabilisce quanto a lungo il sistema aspetta prima di terminare forzatamente un’applicazione.

Sul fronte dei servizi, WaitToKillServiceTimeout regola il tempo concesso ai servizi prima che siano arrestati in modo forzoso. Riducendo questi valori, Windows diventa meno paziente e accelera la transizione verso il riavvio vero e proprio.

In un altro nostro approfondimento, abbiamo visto come riavviare Windows 10 e Windows 11 in modo più veloce senza inutili attese.

Riavvio forzato da riga di comando

Quando l’obiettivo è riavviare Windows nel modo più rapido possibile, evitando che applicazioni e processi interattivi rallentino o blocchino la procedura, lo strumento più diretto è il comando shutdown. La sintassi da usare è la seguente:

shutdown /r /f /t 0

Con /r si richiede un riavvio anziché lo spegnimento; /t 0 imposta un timeout nullo, quindi l’operazione parte immediatamente; soprattutto, /f forza la chiusura delle applicazioni senza attendere che completino la terminazione ordinata.

In termini pratici, ciò significa che Windows non rimane in attesa di programmi che non rispondono e riduce drasticamente la possibilità di vedere la schermata che segnala app in grado di impedire l’arresto o il riavvio. È un comportamento intenzionalmente aggressivo: eventuali dati non salvati nelle applicazioni sono persi al riavvio e alcuni software non avranno modo di eseguire routine di cleanup.

Quanto al rapporto con Avvio rapido, la cosa importante è questa: Avvio rapido riguarda lo spegnimento (“Arresta il sistema”), non il comando “Riavvia”. Un riavvio, sia avviato dal menu Start sia imposto da shutdown /r, esegue un reboot completo della sessione kernel e non utilizza il percorso di ibernazione parziale tipico di Fast Startup.

Un riavvio forzato con shutdown /r /f /t 0 “supera” Avvio rapido nel senso che non lo usa, e rimane uno dei metodi più affidabili per ripartire da uno stato realmente reinizializzato, senza dipendere dal ripristino di un kernel precedentemente ibernato.

Riavvio di emergenza: reboot forzato gestito dal kernel di Windows 11 e Windows 10

Non è finita qui. Poco conosciuta, il Riavvio di emergenza (Emergency Restart, in inglese) è una speciale modalità di riavvio pensata per le situazioni in cui il normale flusso di shutdown non è più affidabile, ma il sistema non è ancora completamente bloccato. Ne abbiamo parlato nell’articolo su come fare il Riavvio di emergenza in Windows 11 e Windows 10.

È accessibile dalla schermata che appare premendo CTRL+ALT+CANC quindi tenendo tenendo premuto il tasto CTRL mentre si seleziona Riavvia, e rappresenta il percorso software più drastico previsto da Windows prima del riavvio completo della macchina. Il messaggio di avviso che precede l’operazione chiarisce subito la sua natura: il riavvio avverrà subito e qualsiasi dato non salvato andrà perso.

Dal punto di vista tecnico, il Riavvio di emergenza salta quasi interamente la fase user mode del ciclo di arresto. Non invia i consueti messaggi di fine sessione alle applicazioni, non attende la cooperazione dei processi e non rispetta i timeout configurati a livello di registro. I processi in user mode sono chiusi in modo diretto e il controllo passa rapidamente al kernel NT, che prepara il sistema al riavvio riducendo al minimo le operazioni non essenziali.

A differenza del comando shutdown /r /f, il Riavvio di emergenza riduce ulteriormente le dipendenze dalla shell e dallo stato della sessione utente, risultando efficace anche quando l’interfaccia grafica fosse parzialmente compromessa.

Nonostante la sua brutalità apparente, il riavvio di emergenza non equivale a togliere alimentazione. Il kernel cerca comunque di preservare l’integrità del file system e di portare l’hardware in uno stato coerente prima del reboot, affidandosi ai meccanismi di base di ACPI e del firmware.

Ti consigliamo anche

Link copiato negli appunti