¿Es Unix (o Linux) lo más permanente en software?

Unix llegó relativamente tarde. Déjame darte un software (o una técnica de software) que es mucho más antiguo: interrupciones.

Regresemos a 1953 y al UNIVAC-1103-1103A. De la excelente historia y descripción general de las interrupciones y los sistemas de interrupción, Mark Smotherman:

Bell y Newell citaron el UNIVAC (o ERA para Engineering Research Associates) 1103 (1953) como el primer sistema informático en usar interrupciones. … Otros dan crédito al 1103A (1956) como el primero en usar interrupciones.

Smotherman también ofrece una cita deliciosa de un artículo de 1958 de Turner y Rawlings sobre las desventajas de esta técnica:

El corazón de estas dificultades es una sutil diferencia entre los modos de operación interrumpido y no interrumpido. En el modo convencional, el resultado del cálculo no solo depende solo del código almacenado inicialmente y de los datos, sino que también depende de cada estado intermedio de la computadora. Con interrupción, debido al tiempo aleatorio de interrupción, esto ya no es cierto; de hecho, incluso con un programa correcto, solo se espera que las respuestas sean predecibles. Uno de los efectos sorprendentes de esta variabilidad es que un error de programación o codificación, al producir un error variable o alguna vez ninguno, puede ser indistinguible de un mal funcionamiento aleatorio de la computadora. Se pasaron muchas horas descubriendo esta pecularidad [sic]. (énfasis añadido).

La historia de Smotherman pone el manejo de excepciones incluso antes (1951), pero eso podría ser un nivel demasiado bajo.

Ahora para una prueba pop: ¿Qué semidiós informático temprano comentó así:

A este respecto, la historia de la interrupción en tiempo real es esclarecedora. Este fue un invento de la segunda mitad de los años 50, que permitió completar una comunicación con el mundo externo para interrumpir la ejecución de un programa a favor de otro. Su ventaja es que permitió la implementación de una reacción rápida ante circunstancias externas cambiadas sin pagar el precio de una gran cantidad de tiempo de procesador perdido en espera improductiva. La desventaja era que el sistema operativo tenía que garantizar la ejecución correcta de los diversos cálculos a pesar de la imprevisibilidad de los momentos en los que tendrían lugar las interrupciones y el procesador central pasaría de un cálculo a otro; El no determinismo implicado por esta imprevisibilidad ha causado dolores de cabeza sin fin para aquellos diseñadores de sistemas operativos que no sabían cómo lidiar con eso. Hemos visto dos reacciones al desafío de esta complejidad adicional.

La única reacción fue mejorar las instalaciones de depuración, como lo hizo IBM para el diseño de OS / 360. (Este fue el sistema operativo que IBM trató de diseñar para sus máquinas de la serie 360, que se introdujeron en la primera mitad de los años 60; los problemas de IBM con este diseño facilitaron en 1968 el reconocimiento del fenómeno mundial que se conoció como ” la crisis del software “.) IBM construyó, de hecho, monitores especiales que registraron exactamente cuándo el procesador central cumplió con la interrupción; Cuando algo había salido mal, el monitor podía convertirse en un controlador, forzando así una repetición del historial del sospechoso y haciendo que el “experimento” fuera repetible.

La otra reacción se pudo observar en THE (Universidad Tecnológica de Eindhoven), a saber. determinar las condiciones bajo las cuales uno podría razonar de manera factible y segura sobre tales programas no deterministas y, posteriormente, asegurarse de que el hardware y el software cumplan estas condiciones.

La diferencia fue sorprendente, mostrando una vez más que la depuración no es una alternativa para el control intelectual. Si bien OS / 360 siguió siendo un desastre para siempre, el sistema de multiprogramación diseñado en THE era tan robusto que ningún mal funcionamiento del sistema dio lugar a una llamada espuria para el mantenimiento del hardware. No hace falta decir que todo el episodio me dejó una impresión duradera.

Una moraleja es que la interrupción en tiempo real fue solo la ola, mientras que la marea fue la introducción del no determinismo y el desarrollo de técnicas matemáticas para enfrentarlo. (énfasis añadido)

La respuesta se puede encontrar en el enlace Smotherman.

¡Disfrutar!

Una de mis pequeñas partes favoritas del autor, y científico de la computación, el libro de Vernor Vinge A Deepness in the Sky es la parte en la que señala que el esquema de numeración utilizado por su civilización espacial “Qeng Ho” * no * se basa en El aterrizaje de Neil Armstrong en la luna el 21 de julio de 1969 2:56:16 UTC (como cree la mayoría de las personas de la época), pero en realidad comienza “unos pocos segundos más tarde”, o Segundo 0 del tiempo de Unix, que es el 1 de enero de 1970 00: 00:00 UTC.

Supongo que si la civilización humana dura tanto tiempo, podríamos estar usando este mismo esquema básico de numeración de tiempo durante miles de años, y tal vez en miles de mundos, ya que los humanos son muy, muy conservadores cuando se trata de tales cosas.

En cuanto a Unix en sí, y variantes como Linux o Android, es un ejemplo de una tecnología que probablemente sea casi óptima para el entorno en el que está destinado a funcionar: computadoras de arquitectura Von Neumann que ejecutan programas del tipo que normalmente ejecutamos en estos días que interactúan con el uso de un teclado y / o la interfaz de usuario dirigida por un dispositivo señalador.

Existen muchos otros sistemas operativos, incluidos algunos que tienen sus bases de fans y dominios de aplicación, pero tienden a ser jugadores de nicho.

Para reemplazar los sistemas operativos tipo Unix, un sistema operativo tendría que ser dramáticamente mejor, y dramáticamente diferente en el sentido de que si solo es marginalmente mejor, sus mejoras simplemente se incorporarán a los Me gusta Unix existentes.

Es posible que podamos ver dramáticamente diferentes tipos de dispositivos de computación, como las computadoras Quantum, y estos pueden exigir un enfoque muy diferente a los núcleos del sistema operativo o las interfaces humano-computadora (como los implantes cerebrales directos, etc.). Tal cosa puede necesitar un sistema operativo totalmente nuevo, o puede ser que tengan núcleos muy diferentes pero aún utilicen un modelo de proceso e interfaz de usuario “similar a Unix”.

Unix y sus variantes ciertamente han resistido la prueba del tiempo. Si fuera un apostador, esperaría verlo continuar en el futuro.

Al mismo tiempo, esperaría que siguiera cambiando bastante dramáticamente también. Por ejemplo, las pilas de la nube de hoy no se parecen mucho a las máquinas de un solo usuario de antaño.

También espero que comencemos a ver más y más cosas como servicios que se ejecutan en hierro desnudo, es decir, cosas como AWS Lambda.