¿Qué es lo que hace que Windows requiera un reinicio constante mientras que Linux no? [duplicar]

21

Como muchas personas, ejecuto sistemas duales en mi computadora. Las actualizaciones importantes requieren reinicios constantes en Windows, aunque no creo que esto me haya pasado en Linux. ¿Qué propiedades de cada sistema operativo deciden si esto es posible o no?

Benjamin Lindqvist
fuente
55
Todavía tengo que reiniciar mis sistemas Linux para instalar una actualización del kernel. Sé que hay formas de evitar eso, pero no necesito un tiempo de actividad tan extremo. Si bien rara vez hay una actualización del kernel para mis servidores o instalaciones de soporte a largo plazo, recibo actualizaciones ocasionales del kernel en mis sistemas más avanzados: no veo mucha diferencia entre Linux y Windows aquí. Sin embargo, las actualizaciones de Linux son mucho menos obstructivas que las actualizaciones de Windows, ya que no convierten el reinicio en un juego de espera.
amon
1
Bueno, en realidad ... 1. Este es un problema menor con Windows hoy de lo que solía ser. Cuando sucede, generalmente es porque alguien olvidó cerrar una aplicación que bloquea algunos archivos que Windows necesita actualizar, y en lugar de fallar la instalación, Windows simplemente registra esos cambios de archivo para el próximo arranque. 2. Un reinicio en frío en mi máquina actual con Windows 10 tarda unos 15 segundos, la mitad de los cuales es el tiempo POST.
Robert Harvey
@ Robert: ¿Cuál es su definición de terminar el inicio? Llegar a la pantalla de inicio de sesión / escritorio no es tan malo, está esperando que todos esos servicios comiencen para que realmente pueda usar la computadora que es una molestia. Si su tiempo incluye iniciar los servicios, ¿cuál es su configuración? De acuerdo, no tengo la última y mejor, pero tengo computadoras lo suficientemente decentes y mi computadora de trabajo tarda unos 3 minutos y mi casa unos 2 1/2 antes de que pueda comenzar a trabajar en ellas.
Dunk
@Dunk: compre un SSD.
Ben Voigt
@ Ben: no soy el próximo en mi casa para comprar una computadora nueva, pero mi hijo sí. Así que le construiré uno para Navidad y lo comprobaré de primera mano. Sin embargo, los informes de prueba de referencia que he leído muestran aproximadamente un 50% de mejoras de velocidad, no un 1000% como Robert ve en mis sistemas. El 1000% definitivamente vale la molestia de una actualización. 50% no tanto.
Dunk

Respuestas:

49

Es una consecuencia de las decisiones de ingeniería.

En un sistema Linux, es posible eliminar un archivo que todavía está en uso; el sistema de archivos usa lo que es esencialmente una forma de conteo de referencias, y tener el archivo abierto es simplemente otra referencia a él. Cuando lo cierre, el archivo se limpiará. Como consecuencia de esto, es posible reemplazar el código del sistema operativo central y los archivos de datos sin necesidad de apagarlos y reiniciarlos (también conocido como reinicio).

En Windows, abrir un archivo lo bloquea en el sistema de archivos y no se puede eliminar. Esto significa que el código que se está ejecutando actualmente no se puede actualizar sin reiniciar. Pero esto también significa que siempre puede saber exactamente qué versión se está ejecutando en su sistema; bajo el modelo de Linux, es posible recibir una actualización importante del software del sistema, aplicarla con éxito y aún no tenerla operativa en su sistema, porque la versión antigua no actualizada todavía se está ejecutando.

Es una compensación de ingeniería, como la mayoría de las cosas en informática.

Mason Wheeler
fuente
66
@ Ian No, puede reiniciar sus servicios para aplicar las actualizaciones. O, en el caso del núcleo, puede usar ksplice, kpatch, etc., o las nuevas características en Linux 4.0.
niñera
2
@Dupuplicator, claro; Solo soy pesimista sobre la tasa de adopción. Un equipo de desarrollo con el que trabajo ha anunciado que ya no aceptarán parches que agreguen soporte para características opcionales del sistema después de que un error en las versiones del sistema lo suficientemente antiguas, el soporte de notificación basada en el socket de notificación dio como resultado una nueva copia de su demonio ser girado (¡además de los viejos!) una vez por segundo.
Charles Duffy
1
@krlmlr: Eso no le permite eliminar un archivo que está abierto. De la documentación : "La función DeleteFile marca un archivo para su eliminación al cerrar. Por lo tanto, la eliminación del archivo no se produce hasta que se cierra el último identificador del archivo" Todavía puede reemplazarlo, utilizando MoveFilepara quitar el antiguo del camino .
Ben Voigt
1
@Ian, por "trivial" me refiero a cualquier persona responsable de construir un sistema de actualización de distribución de Linux sabrá cómo hacerlo realidad, así que la pregunta es si es una buena idea ejecutarlo automáticamente (o cómo exponerlo) para el usuario), no si es posible.
Charles Duffy
2
@CharlesDuffy No sé cómo funciona bajo el capó, pero el paquete de reinicio de Debian hace el trabajo que está describiendo, es decir, reinicia automáticamente los servicios cuyos archivos ejecutables / bibliotecas se acaban de actualizar.
zwol
3

Es una consecuencia de la vista de las expectativas pronosticadas del usuario.

Los sistemas Linux se modelan después de la ejecución de Unix en servidores. El tiempo de actividad fue un punto de jactancia en estas comunidades. Cualquier cosa que redujera el tiempo de actividad era mala. Y este es un efecto secundario de la expectativa de que la computadora tenía múltiples usuarios y que el tiempo de inactividad de la programación debía coordinarse con múltiples usuarios.

Windows fue diseñado para el mercado de PC. En el momento en que se introdujo, el hecho de saber que podía salir de un programa e iniciar otro sin reiniciar era la señal de un usuario experimentado de la computadora. Debido a esto, no había razón para no usar nombres de archivo como el identificador principal al diseñar ntfs.

hildred
fuente