FileVault è una cosa molto complicata che dipende da un numero di variabili per eseguire le sue operazioni, come la dimensione complessiva dell'unità che si sta crittografando, il tipo di unità (HDD [e RPM], SSD, ecc.), e la quantità di dati effettivi (e tipo di dati) memorizzati nell'unità.
Mi sono imbattuto in uno scenario un po 'indietro dove ho dovuto disabilitare FileVault affinché alcuni processi si avviino automaticamente all'avvio senza che io debba prima effettuare il login. Avevo un HDD da 1TB criptato pieno al 70%. FileVault ha impiegato quasi 4 GIORNI per decrittografare questo volume. Quindi sì, i processi di FileVault possono sicuramente richiedere un po '.
Su un'altra nota riguardante non FileVault stesso, ma la barra di avanzamento in generale, quando ho aggiornato da Mavericks a Yosemite, la barra di avanzamento è rimasta al 99% dicendo "1 minuto rimanente" per oltre 2 ore.
Penso che questa sia solo una manipolazione buggy di alcuni processi della GUI che gli sviluppatori ritengono non così importanti come cose che effettivamente influenzano le normali funzionalità del sistema, in quanto è più una cosa dell'esperienza utente che viene messa sul back burner per quanto riguarda lo sviluppo e il miglioramento.
Poi di nuovo (e so che questo non è lo stesso livello di codice su cui opera il sistema operativo), ma se mai provi ad implementare una barra di avanzamento per le operazioni in bash
(che non hanno già questa funzionalità integrata , come rsync
, wget
, ecc.), scoprirai che è incredibilmente difficile stimare adeguatamente il "tempo rimanente stimato" di determinate operazioni di processo.
Come ho detto prima, bash
è un linguaggio di scripting della shell, e non un vero linguaggio di programmazione, quindi non posso parlare per C
, C++
, ecc., ma il comportamento di base che ho visto in bash
per le barre di avanzamento è la seguente (se questo aiuta a fornire informazioni):
- Hai 10 processi da eseguire in uno script.
- La barra di avanzamento si aggiorna con incrementi del 10% al completamento di ogni processo, in modo che, una volta completato l'ultimo processo, la barra di avanzamento mostrerà il 100%.
- Diciamo che ogni processo dovrebbe richiedere 1 minuto per essere completato, quindi il tempo complessivo stimato per l'intera operazione dovrebbe essere di 10 minuti.
- Ora diciamo che il processo n. 9 riscontra alcune cose inaspettate che deve gestire sul backend dietro le quinte (che la GUI non può essere configurata per l'aggiornamento e l'account per quanto riguarda l'ampia portata delle singole configurazioni di sistema, perché sarebbe molto lento giù sviluppo).
- Invece di impiegare 1 minuto per l'esecuzione, il processo n. 9 richiede 10 minuti per risolvere tutto il disordine che ha dovuto affrontare.
- La barra di avanzamento sarà bloccata al 90%, dicendo "1 minuto rimanente" per 10 minuti.
- Il risultato finale è un'operazione che dice che impiegheranno 10 minuti, ma in realtà richiede 20 minuti con una barra di avanzamento bloccata al 90% per metà tempo.
Quanto sopra è solo la natura di molte delle barre di avanzamento e delle implementazioni di aggiornamento degli utenti che ho incontrato in natura, e si spera che possa aiutare a spiegare la natura di ciò che hai incontrato (solo su una scala più piccola, molto più semplice).
Microsoft è orribile in questo, come già sanno tutti gli utenti di Windows, e ovviamente hanno preso pochissimi (se ce ne sono) passi per correggere o migliorare quel comportamento. Quindi, sfortunatamente, a volte la risposta è semplicemente andare via o fare un pisolino, e poi tornare indietro e vedere se qualcosa è realmente accaduto. Sembra che questa sia una cosa che hanno in comune con Apple (o forse, come ho detto prima, è solo difficile tenere conto del tempo rimanente stimato per specifici tipi di operazioni).
Nel tuo scenario specifico è possibile che FileVault pensasse che fosse quasi terminato e che quindi eseguiva alcune operazioni su determinati blocchi di file o qualcosa che richiedeva un po 'più di quanto originariamente previsto, e la barra di avanzamento non era configurata per tenere conto di questo.