¿Por qué a veces necesito reiniciar mi computadora después de instalar un nuevo software y otras veces no?
¿Hay alguna razón por la que necesita este reinicio o por qué no siempre es de una manera u otra?
¿Por qué a veces necesito reiniciar mi computadora después de instalar un nuevo software y otras veces no?
¿Hay alguna razón por la que necesita este reinicio o por qué no siempre es de una manera u otra?
Respuestas:
Depende.
Si el software que se está instalando afecta una parte integral del sistema operativo, entonces se requiere un reinicio. Por ejemplo, un nuevo kernel para el sistema operativo.
En los sistemas Windows, a menudo se usa porque los usuarios se consideran demasiado estúpidos para usar sus computadoras correctamente. Como ejemplo, Microsoft publica detalles sobre cómo cambiar el "Tipo de nodo" utilizado para la creación de redes en su sitio web , incluidas las instrucciones para "reiniciar la computadora" cuando todo lo que se requiere es reiniciar un servicio de red como se detalla aquí . Porque nosotros, como los usuarios somos demasiado estúpidos para reiniciar un servicio, se nos dice que reiniciemos todo.
Para algunas piezas de software, he llegado a la conclusión de que es un hábito y que a menudo no es necesario, incluso cuando se me dice que lo haga. Si no creo que una pieza de software debería haber hecho algo importante para el sistema operativo, tiendo a no molestarme y no he tenido ningún problema (y si hubiera problemas, serían fáciles de resolver).
A veces, una pieza de software hará un cambio que no puede entrar en vigencia mientras la computadora está en uso. Algunas razones podrían ser: un archivo está en uso, el cambio solo puede ocurrir durante el arranque de la computadora, puede haber un problema de seguridad que solo se puede hacer antes de que la computadora tenga su red activa, tal vez el escáner de virus podría interferir con el instalar.
A veces, es solo una programación descuidada por parte de los desarrolladores.
Estoy seguro de que hay muchos más.
A menudo, cuando instala un nuevo software, un dll (archivo) que utilizan muchos otros paquetes de software debe actualizarse a una nueva versión. (Esto es mucho más probable que ocurra al actualizar una aplicación que ya tiene instalada).
Si el dll está siendo utilizado por una aplicación en ejecución, una parte se cargará en la memoria y el resto se leerá desde el disco cuando sea necesario. Por lo tanto, el dll estará bloqueado en el disco. (¡Piense en los problemas si no estaba bloqueado!)
Una DLL que está bloqueada no se puede actualizar, por lo que el instalador le pedirá a Windows que reemplace la DLL con la nueva versión la próxima vez que se reinicie la máquina. De ahí la necesidad de reiniciar.
Algunos instaladores mejores le dirán las aplicaciones que deben cerrarse antes de ejecutar el instalador, por lo que dejará que la DLL se actualice sin reiniciar. Sin embargo, eso hace que la interfaz de usuario del instalador sea más compleja y genera más llamadas de soporte.
Un instalador para una aplicación también puede hacer que la aplicación guarde su estado, se apague automáticamente y luego se reinicie después de que se haya actualizado la DLL. Esto solo se puede hacer si la aplicación única usa la DLL. La mayoría de las aplicaciones de actualización automática hacen esto: esta debería ser la norma para las aplicaciones de mercado masivo cuando hay muchos usuarios.
Todo lo anterior puede conducir a una lógica compleja que es difícil de probar. Probar los instaladores lleva mucho tiempo, ya que debe intentar adivinar cada estado en el que se encuentra la máquina de un usuario. Por lo tanto, a menudo es mejor que un instalador sea simple y siempre funcione, incluso si esto conlleva algunos reinicios más para el usuario .
No es frecuente que un usuario decida comprar una aplicación diferente debido al reinicio del instalador, por lo que el vendedor pasa el tiempo (dinero) trabajando en lo que se necesita para que el usuario compre sus aplicaciones.
¿Con qué frecuencia ha tenido un problema después de instalar una aplicación que se solucionó cuando reinició? Piense en los costos de soporte de muchos usuarios llamando por teléfono con problemas que se resuelven solo con un reinicio. Como desarrollador, puede ser muy tentador conseguir que el usuario reinicie siempre después de instalar su software, incluso cuando cree que no es necesario.
La mayoría de los sistemas operativos y software se escribieron en los días en que el espacio en disco y la memoria cuestan mucho dinero. Ahora hay un movimiento para que las aplicaciones tengan una copia privada de todos los archivos dlls que usan, por lo tanto, actualizan el borrador, pero usan más espacio de almacenamiento.
En los servidores, esto se hace con "contenedores", sin embargo, los "contenedores" no funcionan bien para el software de escritorio, ya que desea poder acceder a los datos guardados por una aplicación con otra aplicación. (De lo contrario, solo use un iPhone).
La razón es porque si no lo haces: te estrellarás. De Raymond Chen :
Incluso si reemplaza un archivo que está en uso, aún puede haber código en el sistema que quiera usar la versión anterior. Por ejemplo, suponga que tiene dos archivos que funcionan juntos:
- A.dll
- B.dll
Emite un parche que actualiza ambos archivos, pero
A.dll
está en uso. No hay problema. Simplemente los reemplazas a ambos. Como resultado, los programas que todavía usabanA.dll
siguen usando la versión anterior, pero los programas nuevos usarán la nueva. Y todos los programas obtienen la nueva versión deB.dll
.Ahora, un programa que estaba usando el viejo
A.dll
decide llamar a una función. Naturalmente espera la versión anterior deB.dll
, pero en cambio obtiene la nueva versión. Según el tipo de cambio que haya realizadoB.dll
, esta llamada puede funcionar, o puede fallar. Ambas DLL suponen que su socio proviene del mismo conjunto coincidente.
Para ser completamente honesto, es menos trabajo (y por lo tanto menos $$) de parte de los desarrolladores de software asumir que las actualizaciones siempre resultarán en un reinicio. Esta es probablemente una decisión tanto de los contadores de frijoles como de los desarrolladores.
En última instancia, hay muy pocas actualizaciones que, en un mundo ideal, no podrían realizarse sin reinicio, pero requiere mucha planificación previa, y existen algunos riesgos, dada la gran variedad de configuraciones posibles que puede tener un sistema.
Tiene que ver con el hecho de que es muy difícil cambiar el código, ya que se está ejecutando sin causar algunos problemas importantes. La solución: detener todo antes de cambiar el código, de esa manera puede estar seguro de que no se está ejecutando nada. Es un ataque de fuerza bruta que es en gran parte innecesario muchas veces que supuestamente se requiere, pero puede ser absolutamente necesario, especialmente si está actualizando un código particularmente importante. En realidad, hay una compañía completa que se especializa en hacer actualizaciones que NO requieren reiniciar para este código particularmente importante. La forma en que lo hacen es en este documento http://www.ksplice.com/paper .
Debe reiniciar cuando se modifican archivos importantes del sistema para Windows, porque Windows no permite que estos archivos se modifiquen mientras están en uso. Por lo tanto, la mayoría de las actualizaciones de Windows Update requieren un reinicio, al igual que los programas que se integran en Windows (como antivirus). Hasta que reinicie, Windows no puede realizar los últimos pasos necesarios para "instalar" el programa.
Puede comparar esto con Linux, que rara vez requiere que reinicie. Incluso cuando se le pide que reinicie, generalmente solo necesita cerrar sesión y volver a iniciarla. Esto se debe a que un entorno típico de Linux se compone de muchos programas diferentes que trabajan juntos para crear un sistema operativo completo. Si se modifica un archivo importante durante una instalación, generalmente, en el mejor de los casos, solo tiene que reiniciar el programa específico que utiliza el archivo.