El de­sa­rro­llo de Unix se cuenta sin lugar a dudas entre los grandes hitos de la historia de la in­fo­r­má­ti­ca. El sistema operativo introdujo conceptos fu­n­da­me­n­ta­les de la te­c­no­lo­gía de la in­fo­r­ma­ción como la es­tru­c­tu­ra je­rá­r­qui­ca de los sistemas de archivos, pero también sirvió como punto de partida para el de­sa­rro­llo de otros sistemas, como los sistemas ope­ra­ti­vos pro­pie­ta­rios de Apple macOs y iOS o el proyecto open source Linux, que a su vez ha dado pie al de­sa­rro­llo de otros sistemas como Ubuntu, Debian o Android, el sistema operativo para di­s­po­si­ti­vos móviles. ¿Cómo se convirtió Unix en una de las apli­ca­cio­nes más in­flu­ye­n­tes de la ad­mi­ni­s­tra­ción in­fo­r­má­ti­ca y por qué el equipo que lo de­sa­rro­lló tuvo que plasmar sus primeras ideas en notas y pizarras?

Historia de Unix: todo comienza en Multics

Corría 1965 cuando un equipo de trabajo compuesto por empleados del MIT (Ma­s­sa­chu­se­tts Institute of Te­ch­no­lo­gy), de la General Electric y de los La­bo­ra­to­rios Bell (Bell Labs) de AT&T –desde 2016 incluida en el de­pa­r­ta­me­n­to de in­ve­s­ti­ga­ción y de­sa­rro­llo de Nokia– presentó su idea de un nuevo sistema operativo en la Fall Joint Computer Co­n­fe­re­n­ce (FJCC) en Las Vegas, EE.UU. Bautizado como Mu­l­ti­ple­xed In­fo­r­ma­tion and Computing Service (Multics), con este nuevo SO se pe­r­se­guían unos pri­n­ci­pios co­m­ple­ta­me­n­te nuevos, dando especial re­le­va­n­cia al concepto del time sharing (tiempo co­m­pa­r­ti­do). Multics debía co­n­ve­r­ti­r­se, así, en uno de los primeros sistemas que pe­r­mi­tie­ran a varios usuarios trabajar si­mu­l­tá­nea­me­n­te en un ordenador. Esto sería posible co­m­pa­r­tie­n­do el tiempo de pro­ce­sa­mie­n­to de la CPU.

Para llevarlo a cabo, este grupo de trabajo ne­ce­si­ta­ba un ordenador que cumpliera una serie de re­qui­si­tos. Por un lado, debía ostentar un juego de in­s­tru­c­cio­nes bien es­tru­c­tu­ra­do que pe­r­mi­tie­ra utilizar el lenguaje de pro­gra­ma­ción PL/I de IBM para su de­sa­rro­llo, tal como se había previsto; por el otro, debía soportar el futuro uso mu­l­tiu­sua­rio y trabajar de forma asíncrona para que las pérdidas de re­n­di­mie­n­to en la gestión de la memoria se ma­n­tu­vie­ran lo más bajas posible. Esto llevó al equipo a de­ca­n­tar­se por el GE-635 y más tarde por el GE-645 de General Electric. El de­sa­rro­llo se llevó a cabo en el sistema mu­l­tiu­sua­rio CTSS, que ya estaba operativo y había sido lanzado por el MIT a comienzos de la década de los sesenta. Sin embargo, los retrasos en el de­sa­rro­llo del co­m­pi­la­dor PL/I, las es­tre­che­ces eco­nó­mi­cas, algunas di­fe­re­n­cias internas y la presión creciente desde el exterior llevaron fi­na­l­me­n­te a los La­bo­ra­to­rios Bell a retirarse del proyecto en 1969.

Multics se convierte en Unix

De­sa­rro­lla­do en el MIT, cuando en 1970 el consorcio Honeywell In­te­r­na­tio­nal Inc compra la compañía General Electric, Multics pasa a di­s­tri­bui­r­se co­me­r­cia­l­me­n­te en máquinas Honeywell-6180 hasta 1986. Pero a Ken Thompson, que en aquel momento era uno de los in­fo­r­má­ti­cos de los es­ci­n­di­dos La­bo­ra­to­rios Bell, no le aba­n­do­na­ba la idea de un sistema mu­l­tiu­sua­rio, de modo que, junto a Dennis Ritchie y un modesto equipo de AT&T, comienza a pla­ni­fi­car un sistema propio basado en los pri­n­ci­pios de Multics. La búsqueda del equi­pa­mie­n­to, sin embargo, se reveló al principio bastante difícil. Al oponerse los La­bo­ra­to­rios Bell a la compra del modelo de ordenador adecuado, los de­sa­rro­lla­do­res no tuvieron más remedio que anotar sus ideas y los avances en su sistema de archivos a papel y lápiz.

Fi­na­l­me­n­te, el proyecto consiguió un mi­nio­r­de­na­dor PDP-7 de la empresa Digital Equipment Co­r­po­ra­tion (DEC). Con el tamaño de “solo” un armario ropero, este sistema in­fo­r­má­ti­co fu­n­cio­na­ba con el sistema operativo GECOS (General Electric Co­m­prehe­n­si­ve Operating System), que a partir de entonces funcionó como pla­ta­fo­r­ma de de­sa­rro­llo. De su trabajo enseguida nacieron he­rra­mie­n­tas de software de tanto valor como un in­té­r­pre­te de comandos (sh), un editor (ed) y el sistema de archivos que ya existía en papel, aunque al principio aún en en­sa­m­bla­dor, un lenguaje de pro­gra­ma­ción si­m­pli­fi­ca­do. Como, a di­fe­re­n­cia de Multics, el nuevo sistema operativo solo permitía el acceso a dos usuarios eje­cu­ta­n­do un proceso cada uno al mismo tiempo, el equipo se inspiró en aquel para bau­ti­zar­lo como Unics –la li­mi­ta­ción de la longitud de los nombres en GECOS hizo el resto, co­n­vi­r­tié­n­do­se fi­na­l­me­n­te en Unix.

Unix obtiene su propio lenguaje de pro­gra­ma­ción

Tras escribir Unix y otros programas ele­me­n­ta­les con el lenguaje en­sa­m­bla­dor, el equipo de los La­bo­ra­to­rios Bell se dispuso a sustituir este lenguaje por una variante menos compleja. Sin embargo, la idea de de­sa­rro­llar un co­m­pi­la­dor para el lenguaje IBM vigente se descartó al poco tiempo y, en lugar de ello, se comenzó a trabajar en un lenguaje nuevo muy orientado a PL/I, el lenguaje de Multics, y a BCPL (Basic Combined Pro­gra­m­mi­ng Language) de­sa­rro­lla­do en el MIT. Esto lleva a Ritchie y a su equipo a re­es­cri­bir algunas de las he­rra­mie­n­tas de sistema en este lenguaje im­pe­ra­ti­vo hasta que en 1970 obtienen un nuevo PDP-11 que les obliga a realizar otro giro de pe­r­s­pe­c­ti­va: la nueva ar­qui­te­c­tu­ra de sistema no estaba, como la del PDP-7 y el lenguaje de pro­gra­ma­ción B, orientada a palabras, sino a bytes.

Durante los dos años si­guie­n­tes, los La­bo­ra­to­rios Bell de­sa­rro­lla­ron el lenguaje C, que se co­n­ve­r­ti­ría en un memorable sucesor cuya sintaxis, entre otras cua­li­da­des, se haya presente en diversos lenguajes de pro­gra­ma­ción modernos como la extensión C++, Java, Ja­va­S­cri­pt, PHP o Perl. Cuando en 1973 el lenguaje alcanzó la madurez su­fi­cie­n­te, los de­sa­rro­lla­do­res co­me­n­za­ron a escribir el núcleo completo de Unix en C, pu­bli­ca­n­do el resultado a mediados de 1970. Como en aquel momento AT&T no podía co­me­r­cia­li­zar software en su calidad de mo­no­po­li­s­ta del sector de las te­le­co­mu­ni­ca­cio­nes bajo control estatal, la empresa puso Unix (en­tre­ta­n­to en su versión 6 y fu­n­cio­na­n­do como sistema mu­l­tiu­sua­rio que permitía varios procesos en paralelo) a di­s­po­si­ción de las uni­ve­r­si­da­des in­te­re­sa­das de forma gratuita junto a un co­m­pi­la­dor en C que permitía usar el sistema en casi todas las pla­ta­fo­r­mas.

Poco exigente y open source: Unix conquista a los pro­gra­ma­do­res

Con la concesión del software Unix a in­s­ti­tu­cio­nes edu­ca­ti­vas comienza la marcha triunfal del nuevo sistema operativo, aunque al principio como un juguete para el gremio in­fo­r­má­ti­co. Los procesos de trabajo co­ti­dia­nos que se eje­cu­ta­ban en los or­de­na­do­res mai­n­fra­mes de IBM y en máquinas PDP seguían basándose en los sistemas nativos RSX-11, RT-11 o IST, pero para los de­sa­rro­lla­do­res el valor del código fuente del kernel y de las diversas apli­ca­cio­nes no residía solamente en su efecto didáctico. Las escasas exi­ge­n­cias de hardware y la comodidad de Unix invitaban a ex­pe­ri­me­n­tar y a seguir de­sa­rro­lla­n­do, siendo en la Uni­ve­r­si­dad de Ca­li­fo­r­nia en Berkeley, donde Thompson había estudiado, el lugar en el que esto tuvo más re­so­na­n­cia. El hecho de que Thompson obtuviera una cátedra como profesor invitado en el recién creado de­pa­r­ta­me­n­to de in­fo­r­má­ti­ca en 1976 también desempeñó un papel decisivo.

Fue entonces cuando dos antiguos es­tu­dia­n­tes de la Berkeley, Bill Joy y Chuck Haley, mejoraron, entre otras cosas, el sistema Pascal de­sa­rro­lla­do por Thompson y pro­gra­ma­ron con ex, el pre­de­ce­sor de vi (que aún hoy forma parte de las in­s­ta­la­cio­nes estándar de los sistemas similares a Unix), un editor de texto co­m­ple­ta­me­n­te nuevo. En 1977 y bajo la su­pe­r­vi­sión de Joy, aparece una variante mo­di­fi­ca­da de Unix que contenía todas las mejoras y los cambios que se habían llevado a cabo hasta el momento: la Berkeley Software Di­s­tri­bu­tion (BSD), como se llamó esta variante, que más adelante in­tro­du­ci­ría el protocolo de red TCP/IP en la familia Unix y por primera vez se co­rre­s­po­n­día con los pri­n­ci­pios de un sistema operativo libre (gracias a su propia licencia BSD), está co­n­si­de­ra­da desde entonces como una de las va­ria­cio­nes más im­po­r­ta­n­tes de Unix.

Los años 80: co­me­r­cia­li­za­ción y “guerras Unix”

En los años si­guie­n­tes siguen apa­re­cie­n­do otras va­ria­cio­nes del sistema operativo, aunque el factor fi­na­n­cie­ro comienza también a crecer en re­le­va­n­cia. Así, en 1979, Microsoft adquiere una licencia Unix V7 con el fin, entre otras cosas, de de­sa­rro­llar po­r­ta­bi­li­da­des para pro­ce­sa­do­res Intel y Motorola. Solo un año después la compañía publica el software Xenix, que se esperaba que se co­n­vi­r­tie­ra en el sistema operativo estándar para PC, pero que pre­se­n­ta­ba altos re­qui­si­tos de hardware. Fi­na­l­me­n­te, Microsoft cedió su de­sa­rro­llo al fa­bri­ca­n­te de software SCO (Santa Cruz Operation) para poder co­n­ce­n­trar­se en OS/2 y el de­sa­rro­llo de MS-DOS.

Recién fundada su propia empresa, Sun Mi­cro­s­y­s­te­ms, Bill Joy se suma a la co­m­pe­ti­ción en 1982 con SunOs, un sistema pro­pie­ta­rio basado en BSD que se co­n­ve­r­ti­ría en el pre­de­ce­sor de Solaris y que estaba pensado es­pe­cí­fi­ca­me­n­te para uti­li­zar­se en se­r­vi­do­res y es­ta­cio­nes de trabajo.

Pero la verdadera guerra por el favor de los se­gui­do­res de Unix tuvo lugar entre AT&T, que en­tre­ta­n­to ya había co­n­se­gui­do el permiso para co­me­r­cia­li­zar­lo, y la Uni­ve­r­si­dad de Berkeley, que con BSD y el apoyo de un gran número de pro­gra­ma­do­res, contaba con la ventaja de aportar in­no­va­cio­nes de gran valor. AT&T intentó primero co­n­qui­s­tar el mercado con System III (1981) y, en especial, con el op­ti­mi­za­do System V (1983), ambos basados en Unix V7, mientras que Berkeley publicó en paralelo 4.2BSD, para el cual se emitieron más de mil licencias en 18 meses. Con ello demostró superar en po­pu­la­ri­dad a System V, el cual, además de ser de pago, no contenía el Fast File System (FFS) ni soportaba redes (gracias al TCP/IP integrado) como sí hacía la variante de Berkeley.

Con el cuarto la­n­za­mie­n­to de System V en 1988, AT&T añade estas y otras ca­ra­c­te­rí­s­ti­cas de BSD, de Xenix y de SunOs, lo que llevó a muchos usuarios a cambiar de bando.

Unix entra en el entorno de servidor gracias al pingüino

Mientras que los diversos sistemas Unix se di­spu­taban el favor de la comunidad, Apple y Microsoft se en­za­r­za­ron en una co­m­pe­ti­ción dentro del sector del ordenador personal y más adelante también del entorno de servidor. Al tiempo que Microsoft se hacía con la carrera por el PC doméstico, con Linux aparece en 1991 un sistema basado en pri­n­ci­pios Unix que en los próximos años co­n­qui­s­ta­ría el universo de los se­r­vi­do­res. Con el paquete que formaban el software libre GNU y un kernel también de licencia libre, su de­sa­rro­lla­dor, Linus Torvalds, lograba dos cosas: cumplir su sueño de crear un sistema operativo open source capaz de competir con los demás y tocar la fibra sensible de su tiempo.

Numerosas va­ria­cio­nes Unix-Linux como Debian, CentOS, Red Hat o Ubuntu, también de­no­mi­na­dos derivados, se utilizan aún hoy como software de sistema para todo tipo de se­r­vi­do­res. Ubuntu en especial goza de una creciente po­pu­la­ri­dad en los PC do­mé­s­ti­cos. Sin embargo, Linux no es ni mucho menos el único sucesor que hoy sigue teniendo re­le­va­n­cia en el universo in­fo­r­má­ti­co: desde MacOS X1 10.0 y Mac OS X Server 1.0, el sistema operativo de Apple utiliza Darwin como pla­ta­fo­r­ma, una variante de BSD. Pre­ci­sa­me­n­te, la variante Unix de la Berkeley cuenta con numerosos derivados como FreeBSD, OpenBSD o NetBSD.

Con iOS, que comparte la misma base de sistema que macOS, y Android, basado en el kernel de Linux, los dos sistemas ope­ra­ti­vos para te­r­mi­na­les móviles más ex­te­n­di­dos se cuentan también entre los miembros de la familia Unix.

¿Qué es Unix?

Muchos de los aspectos que ca­ra­c­te­ri­zan a Unix fueron en su momento completas in­no­va­cio­nes que no solo tendrían un gran impacto en el de­sa­rro­llo de sistemas y di­s­tri­bu­cio­nes similares a Unix, sino que fueron incluso adoptados por sus co­m­pe­ti­do­res Apple y Microsoft en sus re­s­pe­c­ti­vos sistemas ope­ra­ti­vos. Fueron es­pe­cia­l­me­n­te las si­guie­n­tes ca­ra­c­te­rí­s­ti­cas con las que Ritchie, Thompson y su equipo co­n­vi­r­tie­ron a Unix en el precursor de los sistemas ope­ra­ti­vos modernos:

Sistema de archivos je­rá­r­qui­co y universal

Un co­m­po­ne­n­te elemental de Unix fue desde el principio el sistema de ficheros or­ga­ni­za­do je­rá­r­qui­ca­me­n­te que permite al usuario ordenar los archivos en carpetas, su­bo­r­di­na­n­do tantos su­b­di­re­c­to­rios como sean ne­ce­sa­rios al di­re­c­to­rio raíz, definido por la barra “/”. Siguiendo el principio fu­n­da­me­n­tal “Eve­r­y­thi­ng is a file” (“todo es un archivo”), Unix también re­pre­se­n­ta a las unidades de disco, los discos duros, las te­r­mi­na­les o los equipos externos como archivos de di­s­po­si­ti­vo en el sistema de archivos. Algunos derivados, como Linux, definen incluso a los procesos y a sus pro­pie­da­des como archivos en el sistema virtual de ficheros procfs.

Mu­l­ti­ta­rea

En el éxito de Unix también tuvo un impacto decisivo la po­si­bi­li­dad de ejecutar varios procesos o programas al mismo tiempo sin cortarse el paso mu­tua­me­n­te. Con este fin, el sistema operativo se apoya desde sus inicios en el método de la mu­l­ti­ta­rea apro­pia­ti­va (pree­m­p­ti­ve mu­l­ti­ta­s­ki­ng), según el cual un co­m­po­ne­n­te de­no­mi­na­do pla­ni­fi­ca­dor (scheduler), anidado en el núcleo del sistema operativo, se encarga de ad­mi­ni­s­trar los procesos en base a un sistema de prio­ri­da­des. Fue mucho más tarde, a lo largo de 1990, cuando Apple y Microsoft se de­ci­die­ron a realizar so­lu­cio­nes de gestión de procesos de este tipo.

Sistema mu­l­tiu­sua­rio

Ya con Multics el principal objetivo de los de­sa­rro­lla­do­res era crear un sistema que pe­r­mi­tie­ra trabajar a varios usuarios al mismo tiempo. Este es el motivo de asignar a cada programa y a cada proceso un pro­pie­ta­rio. Incluso cuando Unix estuvo limitado a dos usuarios al principio, esta cualidad formaba parte desde del libro de ruta del software desde el principio. La ventaja de un sistema mu­l­tiu­sua­rio de este tipo no solamente residía en la po­si­bi­li­dad de acceder a un mismo pro­ce­sa­dor en el mismo momento, sino también en la gestión de permisos ligado a ello, porque ahora los ad­mi­ni­s­tra­do­res podían definir qué permisos de acceso tenía cada usuario y a qué recursos podía acceder. Para ello, era crucial antes que nada que el hardware del equipo lo pe­r­mi­tie­ra.

Capacidad de red

Con 4.2BSD, el sistema Unix de la Berkeley se convierte en 1983 en el primer sistema operativo que integra la pila de pro­to­co­los de Internet, la cual sienta las bases de Internet y de una co­n­fi­gu­ra­ción sencilla de la red y ofrece la po­si­bi­li­dad de pa­r­ti­ci­par como cliente o servidor. A finales de la década de los 80, con la me­n­cio­na­da cuarta versión de System V, aterriza en el mercado una variante del sistema de AT&T comercial en el que se añade al kernel la le­ge­n­da­ria familia de pro­to­co­los. En cambio, no sería hasta 1993 (versión 3.11 y su co­rre­s­po­n­die­n­te extensión) cuando Windows so­po­r­ta­ría TCP/IP.

Mu­l­ti­pla­ta­fo­r­ma

Mientras que en la época del na­ci­mie­n­to de Unix se diseñaba a los sistemas ope­ra­ti­vos y a sus apli­ca­cio­nes en función de un tipo exacto de pro­ce­sa­dor, el equipo de los La­bo­ra­to­rios Bell persiguió desde el principio la visión de un sistema portable. Aunque se utilizaba un lenguaje en­sa­m­bla­dor, tan pronto como se es­ta­ble­ció la es­tru­c­tu­ra fu­n­da­me­n­tal del software de sistema, el proyecto inició un lenguaje de pro­gra­ma­ción propio y más elevado del cual nacería el histórico lenguaje C. Aunque los co­m­po­ne­n­tes escritos en C, a pesar del co­m­pi­la­dor adjunto, estaban todavía fue­r­te­me­n­te ligados a la ar­qui­te­c­tu­ra de las máquinas PDP que Ritchie y los demás uti­li­za­ron como base para sus trabajos, con la posterior y muy mo­di­fi­ca­da versión V7 de Unix de 1979 el sistema operativo se mereció con razón su repu­tación como sistema portable.

Las he­rra­mie­n­tas y la shell de Unix

Los sistemas Unix reúnen un gran número de in­s­tru­me­n­tos y comandos, cada uno de los cuales está concebido ge­ne­ra­l­me­n­te para unas pocas tareas es­pe­cia­les. Linux, por ejemplo, recurre a las he­rra­mie­n­tas de GNU. Para la solución general de problemas se aplica el principio de buscar re­s­pue­s­tas en la co­m­bi­na­ción de he­rra­mie­n­tas estándar en lugar de de­sa­rro­llar pro­gra­ma­cio­nes nuevas y es­pe­cí­fi­cas. La he­rra­mie­n­ta más im­po­r­ta­n­te en este sentido ha sido siempre la shell (sh), un in­té­r­pre­te de comandos orientado a texto que ofrece numerosas opciones de pro­gra­ma­ción. Esta clásica interfaz de usuario puede usarse también sin interfaz gráfica, si bien una interfaz de este tipo, que más adelante en­co­n­tra­ría también su lugar en el entorno Unix con Linux, in­cre­me­n­ta ob­via­me­n­te la comodidad. Para los usuarios ex­pe­ri­me­n­ta­dos, el in­té­r­pre­te de comandos ofrece algunas ventajas fu­n­da­me­n­ta­les:

  • El au­to­co­m­ple­ta­do in­te­li­ge­n­te si­m­pli­fi­ca su uti­li­za­ción
  • Función “copia y pega”
  • Se puede usar de forma in­ter­ac­ti­va (acceso directo) o no in­ter­ac­ti­va (ejecución de scripts)
  • Elevada fle­xi­bi­li­dad, dado que las apli­ca­cio­nes (he­rra­mie­n­tas, comandos) se pueden combinar entre sí con casi total libertad
  • Interfaz de usuario es­ta­n­da­ri­za­da y estable, lo que no siempre está ga­ra­n­ti­za­do en una GUI
  • Las fases del trabajo en scripts se pro­to­co­li­zan au­to­má­ti­ca­me­n­te
  • La im­ple­me­n­ta­ción de apli­ca­cio­nes es fácil y rápida

Unix: pieza clave en la historia de los sistemas ope­ra­ti­vos

El ascenso de Microsoft y Apple, es­tre­cha­me­n­te conectado con sus re­s­pe­c­ti­vos im­pu­l­so­res Bill Gates y Steve Jobs, no tiene equi­va­le­n­te, pero la piedra angular del enorme éxito de ambas mu­l­ti­na­cio­na­les la puso entre 1969 y 1974 el trabajo pionero de Dennis Ritchie, Ken Thompson y todo el equipo de Unix. Y es que del sistema operativo no solo nacerían diversos derivados propios sino que, con sus conceptos como el sistema je­rá­r­qui­co de archivos, el in­té­r­pre­te de comandos o su alta po­r­ta­bi­li­dad, también in­flui­rían en otros sistemas ope­ra­ti­vos. Con el fin de lograr esta última cualidad, se de­sa­rro­lló sobre la marcha el lenguaje de pro­gra­ma­ción C hasta co­n­ve­r­ti­r­lo en el lenguaje más in­flu­ye­n­te de la historia de la in­fo­r­má­ti­ca.

Para hacerse co­n­s­cie­n­te de las po­si­bi­li­da­des de este lenguaje y la fu­n­cio­na­li­dad general de los sistemas ope­ra­ti­vos no hay mejor objeto de estudio que un sistema Unix, sin tener siquiera que recurrir a una de las variantes más clásicas: di­s­tri­bu­cio­nes Linux como Gentoo o Ubuntu se han adaptado a las ne­ce­si­da­des modernas sin renunciar a una propiedad básica como es el control máximo sobre el sistema. Algo más limitadas son las po­si­bi­li­da­des del más amigable sistema macOS, que pese a todo resuelve con bravura el spagat entre la imponente base Unix y una interfaz gráfica de usuario atractiva.

Ir al menú principal