Salve, desiderei sapere quali sono i dati che un S.O. memorizza su disco per gestire la cosidetta ibernazione (o sospensione). Oltre al contenuto della RAM, viene memorizzato anche il contenuto dei registri del processore? E il contenuto della cache? Come è gestito il “risveglio” e come mai è un’operazione delicata?

Non voglio essere pignolo sui termini, dato che potrebbero essere interpretati in modo diverso da sistema operativo a sistema operativo.

Comunque in genere gli stati di sospensione e ibernazione non sono la stessa cosa.

La sospensione è uno stato in cui il SO chiude la sessione di lavoro corrente, e mette il sistema in uno stato di basso consumo energetico. In altre parole spegne tutte le periferiche, compresa la scheda grafica e i dischi, mantendo comunque attivi processore e memoria. Questo significa che nello stato di sospensione non è indispensabile salvare lo stato della RAM su disco. Il principale vantaggio di questo stato è che il sistema non si spegne mai completamente e il suo risveglio è quasi istantaneo, in genere è sufficiente premere un particolare tasto, e nel giro di pochi secondi si riaccendono i dischi e la scheda grafica ed ecco il sistema di nuovo su.

Il lato negativo è che il consumo energetico, anche se ridotto a una frazione del normale, è comunque non trascurabile.

Ben altra cosa è l’ibernazione che salva su disco tutto il salvabile, e spegne realmente il sistema. Per i registri e la cache del processore non è necessario salvarli, dato che non determinano lo stato del sistema, che invece è determinato dal contenuto della RAM (fisica e virtuale), che contiene il vero stato del kernel e dei servizi di sistema, insieme ai file di dati gestiti dai vari programmi, ma che essendo già registrati su disco non necessitano di altro lavoro.

Il grande vantaggio di questo stato è che riduce notevolmente il tempo di spegnimento e avvio della macchina, e lo spegnimento è un vero spegnimento che annulla qualunque consumo energetico. L’unico neo è forse lo spazio richiesto su disco, soprattutto oggi che tipicamente si hanno 2 GB di RAM, ma considerando il costante aumento di capienza dei dischi diventa sempre più trascurabile.

Per quanto riguarda la delicatezza del risveglio della macchina, il problema è che RAM e processore possono anche essere ripristinati, ed è forse la parte più facile, ma è quasi impossibile ripristinare perfettamente lo stato delle periferiche. E se le periferiche non si trovano in uno stato simile al momento in cui si è ibernato il sistema potrebbero determinare una instabilità del sistema stesso.

Per evitare problemi di questo tipo in genere il sistema operativo esegue un logout/disconnessione dell’utente corrente, chiudendo la sessione corrente, rendendo il suo stato più facilmente gestibile.