sábado 25 de septiembre de 2010

El nacimiento de UNIX

Buenas a todos. Soy consciente que queda un capítulo de la serie del Commodore Amiga, el tercero y último, pero debido a circunstancias personales no tengo disponible el acceso a la documentación que tenía sobre el mismo, por lo que, si me permitís, hasta que pueda terminar la serie seguiré hablando de otros temas.

El de hoy es uno que siempre me ha despertado la curiosidad. La leyenda viene a decir que Ken Thompson estaba ocioso por el mundo tras el fracaso del desarrollo del sistema operativo MULTICS, se encontró un PDP-7 muerto de risa por la Bell (donde trabajaba) y se puso a desarrollar un sistema operativo con muchas de las ideas de MULTICS pero quitándole algunas cosas, luego se lo enseñó a sus colegas y decidieron portarlo a otra máquina más potente con el lenguaje que Denis Ritchie acababa de crear, C. Ese es el mito, pero... ¿qué hay de cierto en ello?

Fernando J. Corbató.jpg

Como siempre, cada acontecimiento tiene que situarse en su contexto adecuado, es decir, tenemos que remontarnos al principio. Y el principio de UNIX está en MULTICS. MULTICS era un proyecto liderado por Fernando J. Corbató (en la foto), un científico de la computación que trabajaba en aquel momento en el MIT como experto en sistemas de computación de tiempo compartido. Bajo su tutela se aliaron en 1964 la General Electric, la Bell Labs y el propio MIT para crear un sistema operativo de tiempo compartido que supusiera el futuro de los sistemas operativos de este estilo. Aunque ya existían varios tipos de sistemas de tiempo compartido, la mayoría eran el fruto de experimentos que se habían ido desarrollando en universidades y laboratorios, por lo que la idea de MULTICS era coger todos estos experimentos y aglutinarlos en uno solo que incorporara todas las cosas buenas que se habían creado más algunas propias.

Sin embargo, el proyecto se encontró con numerosos problemas (era demasiado grande y pesado para la época, demasiado ambicioso podríamos incluso decir), lo que provocó innumerables críticas que hicieron que la Bell abandonara el desarrollo del sistema. Finalmente, MULTICS sí fue terminado unos años después, pero supuso un gran fracaso comercial, aunque muchas de sus ideas eran muy interesantes y novedosas, como se demuestra al verlas implementadas se utilizaron en futuros sistemas operativos.

Sin embargo, aunque la Bell hubiera abandonado el proyecto, no significaba que todo el trabajo realizado en los últimos cinco años cayera en saco roto, y varios de los ingenieros involucrados en el desarrollo de MULTICS (Ken Thompson, Dennis Ritchie, Doug McIlroy y J.F. Ossanna) siguieron trabajando en el campo de los sistemas compartidos.

Pero había un problema. Estaban trabajando en el desarrollo de un sistema nuevo, capaz de ofrecer soporte a varios usuarios a la vez (cosa que podía hacer MULTICS) de forma sencilla y económica (cosa que no hacía MULTICS), pero claro... sin un ordenador con el que trabajar todo era, cómo decirlo, un poco más complicado, por lo que realizaron varias peticiones a la Bell para la adquisición de un equipo con el que poder trabajar, peticiones que fueron todas rechazadas (pensemos en los enormes costes que tenían los ordenadores por aquella época, algo difícil de justificar para un grupo como este que simplemente estaba investigando y ni siquiera se sabía si podría salir algo de ahí, enormes costes incluso para un gigante para la Bell).

Por la misma fecha más o menos, Ken Thomson, al que podríamos denominar el padre de la idea original de UNIX (el menos el primer impulsor de la creación de un nuevo sistema operativo), había desarrollado un juego llamado "Space Travel" en un GE 635 (una máquina de General Electric, uno de los tres socios de MULTICS). Sin embargo, este no era un ordenador muy indicado para este tipo de programas tan gráficos por las pocas capacidades en este aspecto con las que había sido diseñado, así que para todos fue una bendición encontrar un DEC PDP-7, el cual estaba dotado de unas capacidades de pantalla muy superiores al GE 635 y apenas era utilizado por nadie, por lo que Ken Thomson empezó a trabajar en portar su juego a esta máquina. Tal vez no parezca tener esto mucha relación con UNIX, pero gracias a este proyecto Ken Thomson aprendió la idiosincracia de la máquina de DEC y los suficientes trucos como para sentirse confiado a la hora de desarrollar en ella las ideas sobre el nuevo sistema operativo que venían rondando por su mente desde hacía tiempo. Ya tenían ordenador con el que trabajar.

Lo primero que fue desarrollado fue el sistema de ficheros, y una vez finalizado siguió la shell, un editor y un ensamblador que fuera capaz de "ensamblarse" a sí mismo (recordemos que por aquellos entonces mucho del código de sistemas se tiraba en ensamblador). Una vez que se podían crear y manipular ficheros, editar código y ensamblarlo sin necesidad de hacer el trabajo en otras máquinas para después pasarlo al PDP-7, es decir, una vez que se tenía un sistema que podía ser autónomo para poder trabajar, se empezó a trabajar directamente sobre el sistema operativo en sí mismo.

Y como todo sistema, necesitaba un nombre. Este vino de la mano de Dennis Ritchie en 1970, el cual le sugirió a Ken Thomson el nombre de UNIX, ya que por un lado se parecía su pronunciación a la de MULTICS, sistema en el que estaba basado, y a la de eunuch, eunuco en inglés, ya que básicamente UNIX era un MULTICS "capado" al que se han ido quitando cosas en pos de la simplicidad.

NewImage.jpg

El sistema poco a poco fue creciendo y llegó el punto en que la máquina original sobre la que estaba instalado, la PDP-7, se había quedado pequeña para alojar el proyecto. Por suerte, con el crecimiento del proyecto fue creciendo su utilidad y también el número de personas que lo utilizaban dentro de la Bell.

Por el tipo de uso que se estaba haciendo de UNIX, sus desarrolladores fueron adaptando el sistema para potenciar el tratamiento de ficheros de texto. Debido a las facilidades del sistema para el tratamiento de ficheros planos (es decir, sólo de texto), uno de los primeros clientes internos del proyecto fue el departamento de patentes de la Bell.

Como el experimento fue muy exitoso, el grupo ganó credibilidad dentro de la empresa y fuerza suficiente para conseguir la autorización para adquirir una máquina nueva, todo un flamante y novísimo DEC PDP-11/45 por $65,000 de 1970 (el cual podéis ver en la foto, junto con Dennis Ritchie, el que está de pie, y Ken Thomson).

Ahora bien, había un problemilla a la hora de portar todo el sistema UNIX del viejo PDP-7 al nuevo PDP-11, y es que todo el sistema estaba escrito en ensamblador y por lo tanto era incompatible de una máquina a la otra (hoy en día cuesta entender que un nuevo sistema sea incompatible hacía atrás, pero... eran otros tiempo, y las horas de ordenador eran más caras que las horas de programador).

Lógicamente, existía la posibilidad de portar todo el código del PDP-7 al PDP-11, pero si en el futuro se quería portar a otra máquina que no fuera un PDP-7 o un PDP-11 exigiría volver nuevamente a adaptar el código, por lo que Ken Thomson y Dennis Ritchie decidieron portar el código de UNIX al nuevo lenguaje que Ritchie había desarrollado a partir del lenguaje B en 1971. Si bien UNIX hasta ese momento estaba escrito en ensamblador, las aplicaciones se desarrollaban algunas en ensamblador y otras en lenguaje B, pero dicho lenguaje tenía algunas carencias, por lo que Ritchie decidió desarrollar un nuevo lenguaje tomando como base B que incluyera conceptos como estructuras y tipos de datos, cosa de la que carecía B. Puesto que era una evolución del lenguaje B, Ritchie lo llamó C, terminando de portar el código de UNIX del ensamblador del PDP-7 a lenguaje C en 1973.

Hasta ese momento los sistemas operativos se escribían exclusivamente en ensamblador para por motivos de eficiencia, por lo que desarrollar un sistema operativo escrito en un lenguaje de programación portable fue todo un hito. Si bien el código en ensamblador era (presumiblemente) más eficiente, el lenguaje C era considerable mas legible y sencillo de modificar, amén de ser portable entre máquinas con distinta arquitectura, por lo que fue rápidamente evolucionando.

En 1974 UNIX tuvo su primera aparición en público al publicarse en la revista Communications of the ACM un artículo explicando el diseño simple y elegante de UNIX. Gracias a este documento, el número de máquinas con UNIX instalado creció a en torno las 600, todo un éxito que no hizo si no crecer en el momento en que UNIX entró en la universidad y comenzó a estudiarse, desarrollándose aún más gracias a la cantidad de nuevos estudiantes utilizándolo y, sobre todo, trabajando en él tanto para crear nuevas aplicaciones como para mejorar el sistema en sí.

UNIX fue creciendo, expandiéndose, mutando, creando disputas por temas de licencias y derechos... pero todo eso es otra historia, y será contada en otro momento...

19 comentarios:

  1. Bien narrado y mas interesante que leer en Wikipedia

    ResponderSuprimir
  2. ¡Excelente artículo señores!

    Gracias por compartirlo.

    ResponderSuprimir
  3. Muy bueno ...

    Si alguien tiene curiosidad, he encontrado esto ( El articulo original en la revista ACM )
    http://portal.acm.org/citation.cfm?id=361011.361061&coll=portal&dl=ACM

    Desgraciadamente, es de pago.15$ nada más y nada menos.

    ResponderSuprimir
  4. Bueno, después de los meses que hacía que no publicaba nada pensaba que os habíais olvidado de mí, me alegro ver que aún conservo algunos lectores. Y gracias por las críticas :)

    ResponderSuprimir
  5. Muy interesante, disfruté cada palabra. Gracias.

    ResponderSuprimir
  6. Pensar que ya hace casi 40 años de eso. Todo un hito en la historia informática.

    Excelente blog, te leo hace rato!

    Saludos,
    El Pibe de Sistemas

    ResponderSuprimir
  7. Muy bien escrito, sin rollos innecesarios. Al grano y con detalles interesantes, muchas gracias

    ResponderSuprimir
  8. Hay una leyenda urbana que dice que el sistema se debería haber llamado UNICS pero que una secretaria, al dictarle el nombre, lo escribió como UNIX.

    ResponderSuprimir
  9. Muchas gracias por el artículo. Esto también es parte de nuestra historia y se debería divulgar.

    ResponderSuprimir
  10. GENIAL!
    Llevo dos días leyendo todas las entradas de este blog... Y me ENCANTA! Necesito más más más...
    Ya te tengo en marcadores y me pasaré cada cierto tiempo.
    tigreton

    ResponderSuprimir
  11. Excelente Vampirro como siempre! Gran historia y muy bien contada como es habitual y debe ser. Un placer leer tu blog y cultivarse de estas historias ignoradas por la masa pero sin las cuales hoy no seriamos lo que somos. Gracias y hasta la próxima.
    Lucas The Great.

    ResponderSuprimir
  12. Buenísimo el blog, recién termino de leerlo todo (y ya está en mi lector de feeds). Me encanta leer sobre la historia de la informática, creaciones de empresas y muerte de muchas de ellas, traiciones, éxitos y escándalos. También como en muchas historias, lamentablemente, hay mitos y mentiras y nunca vamos a saber la verdad de ciertas situaciones.

    Te felicito por el blog y quedo a la espera de nuevas píldoras. Un abrazo.

    ResponderSuprimir
  13. Ya está, me he leído todas las entradas desde la primera. Es muy agradable de leer, muy entretenido y tienes una excelente capacidad de exposición. Sólo desearía que lo actualizases con mayor asiduidad para poder leerlo todas las semanas. Enhorabuena se queda corto.

    ResponderSuprimir
  14. fue imprsionante pibe me estoy llorando en mi kkelly
    recuerdos a la crew

    ResponderSuprimir
  15. oigan caballeros ustedes me podrian explicar -¿Qué empresas había detrás del proyecto MULTICS?
    grasiass =D

    ResponderSuprimir
  16. buaaa weboness sto es una cachinchetaaaa es bueaaa impresionante me e emocionado solo ,lloreee lagrimas..ke opinais?

    ResponderSuprimir
  17. las empresas que habia detras dl proyecto multi son varias manito
    no sea vago y lease el documento

    ResponderSuprimir
  18. Este comentario ha sido eliminado por un administrador del blog.

    ResponderSuprimir