Una historia de UNIX: historia de Unix

Siguiente entrega del especial de octubre de esta saga de artículos dedicados de pleno al mundo Unix como recordatorio de la muerte de Dennis Ritchie, uno de los más importantes científicos de la computación de la historia. Tras ver los antecedentes de UNIX y el timeline de sistemas operativos en el artículo anterior, ahora sí nos vamos a sumergir en la historia de Unix tan apasionante que guarda detrás y que quizás jamás te habían contado.

No hay más que mirar al rededor para ver la importancia que sigue teniendo UNIX, aunque parezca que es algo del pasado. De hecho, si estás ahora mismo usando algún sistema operativo con kernel Linux, algún BSD, Solaris, AIX, HP-UX, etc., se lo debes a estos pioneros de los Bell Labs que lo hicieron posible. Es más, podría haber código basado en *nix en algunos dispositivos electrónicos que usas a diario y no lo sabías, especialmente embebidos basados en Linux, QNX, etc.

Con esta serie de artículos, como hice en mi curso C2GL, quiero cubrir la historia desde Multics a Linux…

La historia jamás contada de Unix: de Multics a Unix

Bell Labs
Barrera de control de Bell Labs en Nueva Jersey.

Antes de nada nos debemos remontar al año 1960. Fue entonces cuando un grupo de científicos del MIT (Massachusetts Institute of Technology), de los Bell Labs (AT&T) y de General Electric (GE), trabajaban juntos para desarrollar un sistema operativo experimental. A este producto lo llamaron MULTICS (MULTiplexed Information & Comptuing Service), y debía funcionar en máquinas GE-645 y posteriormente también en las Honeywell 6180.

El líder de aquel proyecto era un científico de raíces españolas llamado Fernando José Corbatón (Corby). Su experiencia en un proyecto de sistema operativo previo lo llevó a Multics y luego a Honeywell. A pesar de la innovación puesta en este proyecto y todo el esfuerzo, Multics resultaría un fracaso comercial. Pero su influencia sería determinante para Unix.

Fernando Corbató

 

Corby nos dejó el 12 de julio de 2019, otro de los olvidados por los medios y al que le debemos Multics, la Ley Corbató, el uso de contraseñas en los sistemas operativos, pionero en los sistemas operativos de tiempo compartido, etc.

Las críticas hacia Multics fueron muy duras en la época, pero la mayoría eran infundadas. De hecho, Multics aportó mucho más de lo que se cree en el ámbito de los sistemas operativos y poseía una fuerte énfasis en la seguridad, algo atípico para la época. Ya usaba listas de control de acceso o ACLs, usaba contraseñas, y fue de los primeros en usar un único nivel de almacenamiento (sin distinción entre archivos y procesos), el primero en incluir soporte para varios anillos de seguridad, el primero en aportar un sistema de archivos jerárquico (con nombres y longitudes arbitrarios), usó enlaces simbólicos, y primero también en usar una pila por proceso (hoy día el estándar), etc.

En 1969, Bell Labs abandonaría el proyecto Multics. Un año más tarde, toda la división de computación de General Electric sería comprada por Honeywell. Aunque Multics fue un producto colaborativo, se concibió como un producto comercial perteneciente a GE, por tanto, Honeywell se quedó con los derechos al adquirir la división. Aunque la propia Honeywell también lo terminaría abandonado tras el poco éxito que tuvo (actualmente, el código fue liberado bajo licencia MIT).

No siempre las buenas ideas triunfan, y esto es una prueba de ello. A veces pueden más las críticas infundadas y la mala prensa que los hechos. Pero lo cierto es que la marcha de Bell se debió a dos causas. Una era que había un punto flaco en MULTICS, y lo descubrió Kenneth Thompson de Bell Labs. En pleno auge de los videojuegos, pudo comprobar que al crear un videojuego llamado Space Travel para la máquina GE-653, el sistema se comportaba de forma lenta.

La otra razón fue que Ken Thompson y Dennis Ritchie fueron los encargados de portar MULTICS a lenguaje ensamblador para trabajar en computadoras DEC PDP-7, momento en que también descubrieron las bondades del hardware de Digital Equipment Corp., y se habían desencantado de las máquinas de GE.

Eso los llevaría a centrarse en un nuevo proyecto con lo aprendido que se llamaría UNICS (UNiplexed Information and Computing Service) en 1969. Básicamente era un hack modificado de Multics para trabajar con PDP-7, pero bajo una filosofía diferente, la de crear un sistema lo más pequeño y simple posible. Así resolverían la lentitud, rigidez y errores de Multics.

Keneth Thompson, Dennis Ritchie, Douglas McIltroy y otros programadores de Bell Labs, como Brian Kernighan y Rudd Canaday (por cierto, con el que contacté hace un par de años durante su mudanza a Portland), fueron los artífices de este nuevo Unics. Gracias al gran esfuerzo hizo que saliera a delante este proyecto que aún conservaba cosas de Multics, como su fuerte énfasis en la seguridad al usar modo usuario y modo kernel. También se agregaron nuevas funcionalidades, programas, como un procesador de textos, etc.

Casi el único pero que tenía Unics era su nombre, y es que en inglés sonaba fonéticamente como «eunuchs» (castrado). Peter H. Salus y Peter G. Neumann sugirieron cambiar el nombre y se rebautizó como UNIX (UNIpleXed) propuesto por Kernighan y Ritchie. Y he dicho que casi solo tenía es pero, puesto que había otro impedimento, y es que a Bell Labs no le interesó el proyecto. Por ello decidieron no financiarlo.

UNIX se quedó sin un céntimo y estaba destinado al fracaso. Pero como un milagro, el Grupo de Investigación de Ciencias de la Computación les pidió el sistema UNIX para instalarlo en la PDP-11/20. Eso le haría cambiar de idea a Bell y comenzó a financiar el proyecto, aunque se ocultó cara al público hasta 1970. Ese sería el año cuando se haría oficial su existencia.

En 1971 se publicaría un manual de programación bajo UNIX llamado «UNIX Programmer’s Manual» y un año después se reescribió todo el sistema en lenguaje C. Eso sería todo un acierto, aportando un buen rendimiento, estabilidad, y portabilidad para ser modificado y ejecutado en otras arquitecturas. Desde ese momento, como dije en la serie de artículos Programación, C está íntimamente ligado al mundo Unix.

La leyenda había nacido, UNIX era el sistema operativo rápido, estable, seguro, robusto, multiusuario, multitarea y protable que se necesitaba.

La leyenda había nacido

De ser un proyecto a punto de abandonarse, UNIX pasó a ser todo un éxito. En parte porque las universidades comenzaron a usarlo, formando así a sus alumnos con él. Cuando se licenciaban querían llegarlo a sus respectivas empresas, puesto que era a lo que estaban acostumbrados. [premisa que explotan algunos como Apple y Microsoft en los centros educativos actuales regalando licencias o con ofertas para que los alumnos se acostumbren a sus sistemas y no quieran otra cosa…]

Tal fue su grandeza que llegó a dominar el mercado profesional y convertirse en el más popular de la época a pesar de su elevado precio. Incluso llegó a calar dentro del propio gobierno de Estados Unidos, que también lo usaría. Pero no sería otro acontecimiento histórico el que jugó a favor de UNIX más allá de todo esto.

Ese acontecimiento fue el proyecto ARPANET (Advanced Research Projects Agency Network). No deja de ser paradójico que UNIX (BSD 4.0) hizo posible la implementación de este antepasado de Internet y fueron estas redes las que hicieron posible el desarrollo comunitario desde diferentes partes geográficas de Unix.

El gran éxito de Unix hizo que Bell Labs creara la división Unix Systems Laboratories para seguir con el desarrollo de UNIX. Curiosamente, al igual que Linux, UNIX dominaba el sector empresarial, centros universitarios, y sector científico, pero había un sector que se le resistió: los hogares. Pero el motivo era bien distinto, ya que en aquella época un DOS tenía una licencia que costaba unas 200 veces menos que la licencia UNIX (podía valer 5000 o 6000$).

En la época, al pagar la licencia también se incluía el código fuente del sistema operativo UNIX y sus herramientas. Pudiendo crear derivados y modificarlo a tu antojo. Por eso muchos compraron la licencia y crearon sus propias versiones. Uno de los centros más activos en el desarrollo de su propio Unix sería CSRG de la Universidad de Berkeley. Al sistema lo llamaron BSD (Berkeley Software Distribution).

BSD se transformaría en una pieza clave para Linux, como veremos más adelante.

CSRG portó muchas aplicaciones a su Unix y construyeron otras muchas desde cero, incluso incluyeron mejoras al núcleo. Algunos contratos de DARPA con CSRG financiaron la implementación de la pila de red TCP/IP para estos sistemas.

Otras empresas como Sun Microsystems y Digital Equipment Corp. también hicieron sus propias versiones derivadas del código de BSD: SunOS y Ultrix respectivamente. De este modo, BSD se transformó en una segunda fuente no oficial del código tras AT&T, al mismo tiempo que las licencias de UNIX eran cada vez más difíciles de conseguir y más caras.

Por ese motivo, CSRG liberaría en 1989 parte del código de la pila TCP/IP de su kernel. Se denominó Networking Release 1 (Net-1) y creó la licencia BSD para este lanzamiento. CSRG comenzó a usar un modelo de financiación que estaba funcionándole a la FSF en aquella época. Por unos 1000$ permitía que con la licencia BSD se pudiera modificar o redistribuir sus códigos libremente sin problemas legales.

Las ventas se contabilizaban por miles y consiguió muchos fondos para seguir desarrollando BSD. Y Keith Bostic de Berkeley, pensó que podía reescribir todo el código original restante que aún quedaba del UNIX de AT&T, en contra del escepticismo de muchos miembros de BSD. Eso dio lugar al lanzamiento Net-2 de 1991, que no solo incluía el código de la pila de red, también casi todo el kernel y otras aplicaciones.

Microsoft, al igual que otras muchas compañías, se han beneficiado del código abierto. De hecho, la pila de red de Windows NT se nutrió del proyecto BSD.

Seis meses después, Bill Jolitz escribiría el código fuente que faltaba del kernel para funcionar con arquitecturas i386 (x86), ya que hasta la época estaba construído para PDP-11. Así nació 386BSD, iniciado a la par que Linux, y también distribuyéndose a través de Internet. Eso sería lo que daría paso a todos los actuales BSDs, como NetBSD, FreeBSD, OpenBSD y otros, como DragonFly, PC-BSD, Darwin (Mac OS X, iOS), etc. Incluso una compañía ahora extinta, llamada BSDI (Berkeley Software Design Inc) hizo su propia distribución original aportando el código a sus clientes.

Eclosión *nix

Tras esto, comienzan a crearse gran cantidad de sistemas operativos derivados de Unix o BSD, e incluso algunas implementaciones creadas desde cero. Algunos ejemplos fueron IBM AIX, HP-UX, etc. Estas compañías tenían un dilema, y era si elegir AT&T UNIX o BSD como base. La diversidad motivaría a la creación de POSIX para estandarizar el desarrollo.

Mientras tanto, Unix System Laboratories (USL) seguiría con el desarrollo de UNIX original en sus distintas versiones (4, 5, 6..). Pero BSD también había cambiado a UNIX, ya que la versión 6 se comenzaría a basar en BSD 1 y BSD 2, aunque en BSD 2 se agregó el editor de texto vi y el terminal csh, que no estaban en el UNIX original. También se comenzó a incluri un sistma modular denominado pipes o tuberías, dando la posibilidad de hacer un intercambio de datos entre un proceso de escritura y otro de lectura sin ser necesario crear ficheros temporales.

Plan 9: el principio del fin

Después, en 1979, llegaría la versión UNIX 7, basada en BSD 2.9. Ésta sería la última versión original. El motivo era que el personal de Bell Labs comenzaría a centrar sus recursos en el desarrollo de un sistema operativo sustituto de UNIX: Plan 9. Aunque mejoró alguno de los aspectos de UNIX y era más moderno, con algunas innovaciones interesantes que ha heredado Linux, no llegó a tener éxito en su tarea de sustituir a Unix.

A pesar de que USL cesó el desarrollo, las subsidiarias de AT&T como Bell Labs y Western Digital, seguían vendiendo licencias y versiones modificadas de UNIX. Un ejemplo de ello fue el AT&T UNIX System III y la última de ellas, AT&T UNIX System V o SysV que llegaría en 1983. En esta System V se incluían tecnologías y programas desarrollados por CSRG para BSD.

Tras esa versión AT&T pondría fin a su modelo de licencias y pasa su sistema a una licencia comercial, generando un gran malestar entre la comunidad académica. Ya no podrían modificar ni estudiar el código, ya que AT&T se había dado cuenta de la importancia comercial de su producto. Este acontencimiento también sería otro incentivo para la creación de Minix, y en parte de Linux.

Si quieres ver el código de Unix de aquella época, te recomiendo el libro UNIX Operating System Source Code de John Lions.

Todo esto daría lugar a una gran guerra que te explicaré en próximos artículos y que casi es más interesante que la propia historia de UNIX en sí misma…

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar