FileVault es algo muy complicado que depende de una serie de variables para ejecutar sus operaciones, como el tamaño total de la unidad que estás encriptando, el tipo de unidad (HDD [y RPM], SSD, etc.) y la cantidad de datos reales (y el tipo de datos) almacenados en la unidad.
Hace un tiempo me encontré con una situación en la que tuve que desactivar FileVault para que ciertos procesos se iniciaran automáticamente en el arranque sin que yo tuviera que iniciar sesión primero. Tenía un disco duro encriptado de 1TB que estaba lleno en un 70%. El FileVault tardó casi 4 DÍAS para descifrar este volumen. Así que sí, los procesos de FileVault definitivamente pueden tomar un tiempo.
En otra nota que no tiene que ver con FileVault en sí, sino con la barra de progreso en general, cuando actualicé de Mavericks a Yosemite, la barra de progreso se quedó en el 99% diciendo "1 minuto restante" durante más de 2 horas.
Creo que esto es o bien el manejo de errores de ciertos procesos de la interfaz gráfica de usuario que los desarrolladores consideran no es tan importante como cosas que realmente afectan a la funcionalidad normal del sistema, ya que es más una cosa de la experiencia del usuario que se pone en un segundo plano en lo que respecta al desarrollo y la mejora.
Por otra parte (y sé que no es el mismo nivel de código en el que opera el SO), pero si alguna vez intentas implementar una barra de progreso para las operaciones en bash
(que no tienen ya esta funcionalidad incorporada, como por ejemplo rsync
, wget
etc.), descubrirá que es increíblemente difícil estimar adecuadamente el "tiempo estimado restante" de ciertas operaciones del proceso.
Como dije antes, bash
es un lenguaje de script de shell, y no un lenguaje de programación real, así que no puedo hablar por C
, C++
etc., pero el comportamiento básico que he visto en bash
para las barras de progreso es la siguiente (si esto ayuda a dar alguna idea):
- Tienes 10 procesos para ejecutar en un script.
- La barra de progreso se actualiza en incrementos del 10% después de que cada proceso se haya completado, de modo que después de que el último proceso se complete, su barra de progreso mostrará el 100%.
- Digamos que cada proceso debería tardar 1 minuto en completarse, por lo que el tiempo total estimado para toda la operación debería ser de 10 minutos.
- Ahora digamos que el proceso #9 se encuentra con algunas cosas inesperadas que tiene que manejar en el backend detrás de las escenas (que la interfaz gráfica de usuario no puede ser configurada para actualizar y tener en cuenta en relación con el amplio alcance de las configuraciones individuales del sistema, porque eso realmente ralentizaría el desarrollo).
- En lugar de tardar 1 minuto en ejecutarse, el proceso nº 9 acaba tardando 10 minutos en resolver todo el lío que ha tenido que afrontar.
- Su barra de progreso se atascará en el 90% diciendo "1 minuto restante" durante 10 minutos.
- El resultado final es una operación que dice que tardará 10 minutos, pero que en realidad tarda 20 minutos con una barra de progreso atascada en el 90% durante la mitad del tiempo.
Lo anterior es sólo la naturaleza de muchas implementaciones de barras de progreso y de actualización de usuarios que he encontrado en la naturaleza, y espero que ayude a explicar la naturaleza de lo que encontraste (sólo en una escala más pequeña y mucho más simple).
Microsoft es horrible en esto, como cualquier usuario de Windows ya sabe, y obviamente han tomado muy pocas medidas (si es que han tomado alguna) para corregir o mejorar ese comportamiento. Así que, por desgracia, a veces la respuesta es simplemente alejarse o tomar una siesta, y luego volver y ver si algo ha sucedido realmente. Parece que esto es una cosa que tienen en común con Apple (o tal vez, como he dicho antes, es simplemente difícil de contabilizar el tiempo estimado restante para tipos específicos de operaciones).
Es posible que en su situación específica FileVault pensara que estaba casi terminado y luego se encontrara con algunas operaciones en ciertos bloques de archivos o algo que tomara un poco más de lo esperado originalmente, y la barra de progreso simplemente no estaba configurada para tener en cuenta esto.