Herramientas de usuario

Herramientas del sitio


unix-historia

Historia de Unix

Una información más completa se encuentra en la wikipedia.

Fue desarrollado en 1969 por un grupo de empleados de AT&T en Bell Labs: Ken Thompson, Dennis Ritchie, Doug McIlroy y Brian Kernighan entre otros. Aunque fue escrito inicialmente en assembler su fortaleza radicaba en que fue re-escrito en un lenguaje de alto nivel: C. Esto lo hacía fácilmente portable de una máquina a otra. Además permitió que se desarrollara más rápido y a menor costo que otros sistemas operativos que estaban escritos en assembler.

Un juicio anti-monopolio obligaba a AT&T a mantenerse fuera del negocio de los computadores, por lo que Unix se convirtió en un proyecto de investigación de Bell Labs. Por ello hasta la versión 7 de Unix se licenció con código fuente a las universidades, en particular a la Universidad de Berkeley cuya contribución más notable fue el stack TCP/IP. La universidad de Berkeley desarrolló su propia versión que llegó a ser conocida como Unix BSD (de Berkeley Software Distribution). Muchos comandos y utilitarios de Unix vienen de BSD. BSD se usó en innumerables universidades en máquinas VAX de Digital. El estar presente en las universidades fue un aspecto clave en el desarrollo de Unix porque esto le aseguró un basto número de profesionales altamente capacitados.

Uno de los líderes de BSD fue Bill Joy, quien fundó Sun Microsystems en 1982. A la larga las estaciones de trabajo de Sun reemplazarían a los VAX de Digital en las universidades.

En 1983, un nuevo juicio anti-monopolio dividió AT&T en 2 empresas y por fin pudo comercializar Unix. De ahí nacieron Unix System III y Unix System V. Muchos fabricantes de máquinas compraron la licencia y lo comercializaron con distintos nombres: HP-UX de HP, AIX de IBM, Xenix de Microsoft, Digital Unix, Solaris de Sun, etc. Esto llevó a muchas incompatibilidades entre las distintas versiones debilitando su posición en el mercado.

En 1983 Richard Stallman fundó la GNU con el propósito de desarrollar una versión gratuita de Unix. El proyecto logró implementar prácticamente todos los comandos, incluso de mejor calidad. Pero fracasó en el núcleo (llamado Hurd).

En 1991 Linus Torvalds desarrolló Linux como un núcleo de Unix gratuito específico para máquinas x86. Linux y las herramientas de la GNU corriendo en máquinas x86 terminaron por desplazar a las estaciones Sun en las universidades.

Lo que más complicó el desarrollo de Unix fue la ausencia de estándares. Sin duda el esfuerzo más importante es el de la alianza POSIX.

La filosofía de Unix

Doug McIlroy escribió:

“This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.”

Más principios de la filosofía de Unix se pueden encontrar en: http://en.wikipedia.org/wiki/Unix_philosophy.

El manual de Unix

Una de las características que fortaleció Unix es que el sistema incluye un manual de referencia accesible desde cualquier terminal, algo no muy habitual en la época. El manual se descompone en distintas secciones:

  1. sección 1: comandos y utilitarios de Unix (ls, cp, man, sh, etc.). Estos son ejecutados como procesos de Unix.
  2. sección 2: llamadas al sistema (open, read, write, fork, exec, etc.). Estas son funciones que pueden invocarse desde C pero que son implementadas en el núcleo de Unix.
  3. sección 3: funciones de biblioteca (getchar, fread, malloc, free, etc.). Estas son funciones que pueden invocarse desde C y que son implementada en bibliotecas y por lo tando es código que se añade a los procesos.
  4. sección 4: describe archivos especiales (/dev/tty1, /dev/mouse, etc.).
  5. sección 5: describe formatos de archivos (/etc/passwd, /etc/group)
  6. sección 7: describe los estándares relacionados con Unix.
  7. sección 8: describe los comandos de administración de Unix a los que solo la cuenta root tiene acceso.

Más información se puede encontrar en http://man7.org/linux/man-pages. Lo más relevante es que en todo momento se puede obtener información de un comando/función con:

% man ls
% man read

A veces hay nombres que aparecen en varias secciones. Si uno conoce a qué sección pertenece el nombre que busca se puede usar opcionalmente la sección:

% man 2 open
...

Busca open entre las llamadas de sistema. Otros ejemplos:

% man 1 ls
...
% man 3 printf
...
unix-historia.txt · Última modificación: 2014/09/28 21:05 por lmateu