Un sistema operativo es un programa que facilita el empleo del hardware de un computador, lo facilita presentando abstracciones de cada dispositivo. Por ejemplo al guardar información en un disquete, el usuario puede pensar en archivos, y el sistema operativo se encarga de los detalles de acomodar y organizar la información en el disquete a nivel físico. Linux es un sistema operativo tipo Unix de libre redistribución. Unix es el nombre de un sistema operativo concebido en los 70's junto con el lenguaje de programación C por Kenneth Thompson, Dennis Ritchie y sus colegas de laboratorios Bell.
Unix se basa en varias ideas muy buenas que aún están en plena vigencia:
Para los creadores de Unix, un sistema operativo debería ser un conjunto de herramienta y conceptos básicos que le permitan al usuario construir rápida y fácilmente sus propias herramientas para automatizar procesos. Unix es como un juego de herramientas que puede aprovecharse al máximo con algo de estudio.
Otra gran idea que se ha desarrollo junto con Unix ha sido Internet, porque en este sistema se realizaron las primeras implementaciones de los protocolos de comunicación en los que se basa Internet, y aún hoy son sistemas Unix los que mantienen Internet en funcionamiento [3].
Otra buena idea ha sido usar y promover estándares abiertos. Hoy en día existen grupos que mantiene estándares que definen lo que es un sistema tipo Unix: Posix http://standards.ieee.org/regauth/posix/index.html y The Open Group http://www.opengroup.org ---de hecho la palabra Unix es una marca registrada de X/Open.
Dado que sacar copias de un programa no es costoso ni difícil, y dado el carácter de Unix, desde sus comienzos este sistema ha promovido la colaboración y muchas personas han entregado al público las herramientas que han realizado para permitir su libre redistribución. En palabras del mismo Dennis Ritchie “"Lo que queríamos preservar no era sólo un buen ambiente en el cual programar, sino también un sistema alrededor del cual se formara fraternidad"” [4].
Hay incluso varios sistemas operativos tipo Unix cuyas fuentes permiten la libre copia y libre redistribución ---la mayoría se basan en Unix BSD [5]---, algunos son:
Es un descendiente de 386BSD (que a su vez es un descendiente de BSD). NetBSD se centra en portabilidad, es decir que funciona en diversos tipos de computadores. http://www.netbsd.org.
Descendiente de NetBSD, centrado en seguridad y criptografía http://www.openbsd.org.
Descendiente de 386BSD, centrado en facilidad para el usuario final http://www.freebsd.org.
El kernel de este sistema ha sido desarrollado de forma independiente de BSD desde 1992 por Linus Torvalds y un gran grupo de voluntarios (http://www.kernel.org). Otros componentes del sistema fueron tomados de BSD y otros fueron aportados por diversas organizaciones: Free Software Foundation, XFree86, Apache Foundation, etc.
Los sistemas tipo Unix han sido empleados tradicionalmente por programadores, por esto cuenta con compiladores, editores y herramientas para facilitar la programación ---especialmente en lenguaje C. En el caso de Linux tales herramientas han sido desarrolladas por la Free Software Foundation http://www.fsf.org. Así mismo la FSF aportó la licencia que cubre al kernel (llamada GPL) y muchos componentes de un sistema Linux.
Al igual que otros sistemas operativos Unix/Linux cuenta con un sistema de ventanas que, a diferencia de otros sistemas operativos, es independiente de Unix/Linux ---es decir puede ponerse, quitarse o cambiarse---. Tal sistema de ventanas se llama X-Window y la versión particular que se emplea en Linux se llama XFree86 http://www.xfree86.org.
Para facilitar la adopción de Unix por parte de usuarios sin experiencia con este sistema, hay varios proyectos en marcha, los dos más conocidos son GNOME (http://www.gnome.org) y KDE (http://www.kde.org), que funcionan sobre Linux y X-Window. Cada uno brinda un escritorio gráfico y aplicaciones de oficina como a las que están acostumbrados los usuarios de otros sistemas operativos (e.g. procesador de texto, hoja de cálculo, etc).
Hay muchos otros programas que funcionan sobre Linux y que satisfacen diversas necesidades. Dada tal cantidad y variedad de programas para Linux, hay grupos de personas dedicadas a configurar distribuciones. Una distribución de Linux es una selección de programas junto con herramientas para administrarlos e instalarlos con facilidad. Algunos nombres de distribuciones son Redhat, Mandrake, Suse, Debian. Nuestra plataforma de referencia (ver Plataforma de referencia) se basa en la distribución Debian que es de alta calidad técnica y que es realizada por voluntarios del mundo entero desde 1993.
Dennis Ritchie ha escrito una corta autobiografía, que está disponible en: http://cm.bell-labs.com/cm/cs/who/dmr/bigbio1st.html.
La evolución del sistema Unix, como diagrama puede consultarse en http://perso.wanadoo.fr/levenez/unix/, allí mismo se encuentra una buena recopilación de enlaces a diversas versiones de la historia de Unix.
Un muy buen libro en el cual se habla de la historia de Unix es A Quarter Century of UNIX de Peter H. Salus.
La evolución de BSD puede consultarse en: http://www.oreilly.com/catalog/opensources/book/kirkmck.html.
Puede consultarse más sobre la forma de desarrollo del kernel de Linux en el FAQ del mismo: http://www.tux.org/lkml.
Hay un breve resumem de la historia de Linux, Unix y los movimientos de fuentes abiertas y software libre en la sección 2.1 de "Secure Programming for Linux and Unix HOWTO", escrito por David A. Wheeler: http://www.linuxdoc.org/HOWTO/Secure-Programs-HOWTO/history.html.
[3] Por ejemplo el principal servidor de nombres en Internet es una máquina Unix(BSD), puede ver detalles sobre este servidor en http://www.isc.org/services/public/F-root-server.html
[4] Cita tomada de un artículo escrito por Dennis Ritchie sobre la historia de Unix, disponible en http://cm.bell-labs.com/cm/cs/who/dmr/hist.html
[5] BSD es el nombre de una versión de Unix desarrollado en la universidad de Berkeley (Estados Unidos) desde los 70's