Ir al contenido principal

DOS y Unix: el camino a Linux

¿Por qué mirar atrás?

Los sistemas operativos que usamos hoy no salieron de la nada: vienen de dos caminos que nacieron en los años sesenta y setenta, mucho antes de que existiera la computadora personal. Conocerlos explica por qué Windows y Linux son tan distintos entre sí, y por qué comparten más de lo que parece.

  • El linaje del DOS: el sistema de línea de comandos de las primeras PC, del que desciende Windows.
  • El linaje de Unix: el sistema que se pensó para varias personas a la vez y del que descienden Linux, macOS y Android.

Casi todo el software que hoy mueve Internet viene de ese segundo linaje. Por eso vale la pena entender cómo llegó hasta acá.

Línea de tiempo de los sistemas operativos, desde Unix en 1969 hasta Android, con la aparición de BSD, MS-DOS, el proyecto GNU y el núcleo Linux en 1991 1969 1977 1981 1983 1991 2008 Unix BSD MS-DOS GNU Linux Android en los laboratorios Bell el software libre Torvalds y la GPL
Unix es anterior a la PC: nació en 1969 en un laboratorio de investigación. Linux apareció veintidós años después, reuniendo el núcleo de Torvalds con las herramientas del proyecto GNU.

El DOS: la PC antes de Windows

DOS son las siglas de Disk Operating System (sistema operativo de disco): un nombre genérico que usaron varios sistemas, porque lo único que se les pedía era administrar los discos y los archivos. El antecesor más conocido fue el CP/M, muy popular en las computadoras de oficina de fines de los setenta.

Cuando IBM decidió entrar al mercado de las computadoras personales, en 1981, necesitaba un sistema operativo y no tenía uno propio. Microsoft le compró a otra empresa un sistema llamado 86-DOS, obra de Tim Paterson, lo adaptó y se lo licenció a IBM. Así nacieron dos versiones del mismo sistema: PC-DOS, que vendía IBM con sus equipos, y MS-DOS, que Microsoft podía vender por su cuenta a los fabricantes de computadoras "clonadas".

Ese acuerdo fue el que puso a Microsoft en el centro del negocio: como el sistema se podía licenciar a cualquier fabricante, terminó instalado en casi todas las computadoras personales del mundo.

Una IBM Personal Computer de 1981: monitor de fósforo verde, gabinete horizontal y teclado, exhibida en un museo.
Una IBM PC de 1981, la máquina para la que se escribió el MS-DOS: monitor monocromático, gabinete horizontal con dos disqueteras y teclado. Toda la computadora se manejaba escribiendo órdenes.
Foto: The wub, CC BY-SA 4.0 · Wikimedia Commons

Cómo era trabajar con DOS

No había escritorio, ni íconos, ni mouse. Al encender el equipo aparecía una pantalla negra con un símbolo del sistema: la invitación C:\>, que significa "estoy en la unidad C, listo para recibir una orden". A partir de ahí, todo se hacía escribiendo.

El DOS era monousuario (una sola persona usaba la máquina) y monotarea (un solo programa por vez). Y no era un sistema que "corría encima" de nada: era el sistema, y todo el hardware pasaba por él.

Los comandos: hablarle a la máquina

Cada orden se escribía como una palabra y, muchas veces, uno o más parámetros que la modificaban. Al final se apretaba Enter y el sistema respondía en la misma pantalla. Por ejemplo, dir muestra el contenido del directorio actual, y dir /p lo muestra pausado, de a una pantalla por vez.

Recreación de una pantalla del MS-DOS: el símbolo del sistema, la orden DIR y su salida con la lista de archivos del directorio C:\>dir El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es 1A2B-3C4D Directorio de C:\ AUTOEXEC BAT 512 12/03/1996 9:20a COMMAND COM 54.645 12/03/1996 9:20a CONFIG SYS 128 12/03/1996 9:20a DOS <DIR> 12/03/1996 9:20a EDIT COM 413 12/03/1996 9:20a 5 archivo(s) 55.698 bytes C:\>
Recreación de una pantalla del DOS. Arriba, la orden escrita por el usuario (dir); abajo, la respuesta con los archivos, su tamaño y su fecha. El bloque claro al final es el cursor, esperando la próxima orden.
Comando Qué hacía
DIRLista los archivos y carpetas del directorio actual.
CDCambia de directorio (change directory). CD.. sube uno.
MD · RDCrea y borra directorios.
COPY · MOVECopia y mueve archivos.
DEL · RENBorra archivos y los renombra.
TYPEMuestra en pantalla el contenido de un archivo de texto.
EDITEditor de texto del sistema (antes, EDLIN).
FORMATDa formato a un disco, dejándolo vacío.
CLSLimpia la pantalla.
HELPMuestra la lista de comandos disponibles.

Estos comandos no desaparecieron. El Símbolo del sistema de Windows y la terminal de Linux usan los mismos conceptos, y muchos nombres incluso son iguales. Aprender a moverse por la línea de comandos hoy sigue sirviendo, y en un servidor es la forma normal de trabajar.

Las limitaciones que obligaron a cambiar

El DOS estaba bien para su época, pero tenía límites que no se podían parchear:

  • Monousuario y monotarea. No se podía tener dos programas trabajando a la vez ni dos personas usando la misma máquina. Cuando se imprimía un documento, la computadora quedaba ocupada: no se podía hacer nada más hasta que terminara.
  • 640 KB de memoria para los programas. El procesador de las primeras PC podía direccionar 1 MB, pero una parte estaba reservada y el DOS solo llegaba a manejar 640 KB. Todo programa tenía que entrar ahí.
  • Nombres de archivo 8.3. Hasta ocho caracteres para el nombre y tres para la extensión, sin espacios y sin acentos: PRACTICO.TXT, FOTO1.BMP. Por eso los archivos viejos se ven así todavía.
  • Sin protección de memoria. Cualquier programa podía escribir en la zona de otro. Un error en un juego podía colgar toda la máquina, y no había forma de saber cuál fue.
  • Sin usuarios ni permisos. Quien se sentaba frente a la máquina tenía acceso a todo. No existía la idea de una cuenta con contraseña.

Estas limitaciones son, exactamente, las características que definen a los sistemas operativos modernos: multitarea, multiusuario, protección de memoria, permisos y nombres largos. Todo eso apareció después, y buena parte ya existía antes en Unix.

El DOS siguió adentro de Windows

Aunque hoy Windows parece otra cosa, durante años el DOS estuvo debajo: las versiones 1.0 a 3.11 de Windows eran una capa gráfica que necesitaba el DOS para arrancar y funcionar.

Con Windows 95, 98 y ME la línea de comandos quedó escondida pero seguía ahí: se podía "reiniciar en modo MS-DOS", y al arrancar el sistema se leían dos archivos de texto —AUTOEXEC.BAT y CONFIG.SYS— que cargaban el entorno. Fue recién con Windows XP y el núcleo NT que el DOS dejó de estar por debajo.

Hoy el Símbolo del sistema (CMD) y PowerShell siguen existiendo en Windows. No son DOS, pero heredan su forma de trabajo: comandos, parámetros y rutas que se escriben a mano. Podés ver el detalle de esa historia en el tema Windows.

Unix: el otro camino

Unix nació en 1969, en los laboratorios Bell de la empresa telefónica AT&T, en Estados Unidos. Sus creadores fueron Ken Thompson y Dennis Ritchie, que buscaban un sistema cómodo para las computadoras del laboratorio y no lo encontraron entre los que existían.

La diferencia de fondo era el equipo: Unix no se pensó para una computadora personal —que todavía no existía— sino para una minicomputadora que usaban varias personas a la vez, cada una desde su propia terminal. Por eso traía dos ideas que el DOS jamás tuvo: multiusuario y multitarea.

Una minicomputadora PDP-11 montada en un gabinete alto, con unidades de cinta y una terminal a un costado.
Una minicomputadora PDP-11, el tipo de equipo para el que se escribió Unix: un gabinete lleno de módulos, al que se conectaban varias terminales de texto. Nada que ver con una PC de escritorio.
Foto: Loz Pycock, CC BY-SA 2.0 · Wikimedia Commons

Cómo hizo Unix para sobrevivir: el lenguaje C

Al principio, Unix estaba escrito en lenguaje ensamblador, igual que todo: un programa atado para siempre al modelo de máquina para el que se había escrito, porque las instrucciones dependían del procesador. En 1973, Ritchie —que había creado el lenguaje C poco antes— reescribió el sistema en C.

Eso permitió algo nuevo: recompilar el sistema para otra máquina con cambios mínimos. Unix se volvió portable, y se pudo llevar a computadoras de distintos fabricantes. Ahí empezó su expansión, que es la razón por la que está en todas partes.

Las ideas que trajo Unix

Casi todo lo que hoy nos parece obvio en un sistema operativo aparece primero acá. Estas son las ideas que después heredaron Linux y macOS:

Idea Qué significa y por qué importa
Multiusuario Varias personas usan la misma máquina, cada una con su cuenta, sus archivos y sus permisos. En Windows recién llegó mucho después.
Multitarea Varios programas avanzan a la vez, y el sistema decide a quién le da el procesador en cada instante.
Todo es un archivo El teclado, la pantalla, un disco, una impresora o una conexión de red se leen y se escriben igual que un archivo de texto. Eso simplifica todo: un programa no necesita saber qué tipo de dispositivo es.
Un solo árbol de carpetas En lugar de unidades con letra, todo cuelga de una raíz única, la barra /. Los discos se "montan" en alguna rama de ese árbol.
Permisos Cada archivo tiene un dueño y tres permisos: leer, escribir y ejecutar. Un archivo puede dejarse ejecutable o no.
Programas chicos que se combinan Cada programa hace una sola cosa y bien. Para resolver algo más grande se encadenan con la tubería (|), que manda la salida de uno a la entrada del siguiente.
Distingue mayúsculas Para Unix, TP1.txt y tp1.txt son dos archivos distintos. Windows, en cambio, los trata como el mismo. Es una diferencia práctica que sorprende al pasar de uno a otro.

Un dato que se desprende de la tabla anterior: cuando un estudiante escribe sudo en una terminal de Linux, o cuando un archivo "no tiene permiso", está viendo restos de decisiones que se tomaron en 1969.

La familia Unix

Como AT&T no podía vender software —era una empresa de teléfonos y tenía prohibido dedicarse a otros negocios—, entregaba el código de Unix a las universidades a bajo costo. Eso hizo que aparecieran muchas versiones distintas, agrupadas en dos grandes ramas:

  • System V: la rama comercial de AT&T. De ahí salieron sistemas para empresas como Solaris (de Sun), AIX (de IBM) y HP-UX.
  • BSD: la rama de la Universidad de Berkeley, que aportó muchas mejoras y llegó al mundo del software libre. De BSD descienden el macOS de Apple y, por el camino del software libre, FreeBSD, OpenBSD y NetBSD.

El resultado es que hoy casi todo lo que no es Windows viene de Unix: macOS es Unix (a través de BSD), Android se apoya en el núcleo Linux, y los servidores de Internet, en su enorme mayoría, también.

El proyecto GNU y el software libre

Unix era técnicamente muy bueno, pero era software privativo: el código no se podía ver ni modificar, y cada versión pertenecía a una empresa. En 1983, Richard Stallman, que trabajaba en el laboratorio de inteligencia artificial del MIT, anunció un proyecto para construir un sistema operativo libre, compatible con Unix, al que llamó GNU (un acrónimo recursivo que significa "GNU no es Unix").

Para sostenerlo se creó la Free Software Foundation y se escribió la licencia GPL, cuya regla central es el copyleft: cualquiera puede usar, estudiar, modificar y redistribuir el programa, siempre que las versiones derivadas mantengan las mismas libertades. Así el software libre no puede ser "cerrado" por quien lo mejora.

A fines de los ochenta, el proyecto GNU ya tenía casi todo un sistema operativo: el compilador, el editor, las herramientas de línea de comandos, la documentación. Le faltaba una sola pieza: el núcleo, la parte que habla directamente con el hardware, que empezaron a desarrollar pero que no terminaba de estar listo.

De Unix a Linux

Esa pieza que faltaba la escribió, casi sin proponérselo, un estudiante finlandés de 21 años. En 1991, Linus Torvalds publicó en un foro de Internet un mensaje anunciando que estaba programando un núcleo como pasatiempo:

"Estoy haciendo un sistema operativo (libre), solo un pasatiempo; no va a ser grande ni profesional como GNU."

Linus Torvalds, anuncio en el grupo de noticias comp.os.minix, agosto de 1991

El núcleo de Torvalds se publicó bajo licencia GPL y se combinó con las herramientas que el proyecto GNU ya tenía: núcleo de Torvalds + herramientas de GNU = un sistema completo y libre. De ahí el nombre GNU/Linux, aunque en el uso diario se lo llame simplemente Linux.

Conviene tener clara una distinción que se confunde todo el tiempo: Linux es el núcleo, no el sistema entero. El núcleo es la parte que administra el procesador, la memoria y los dispositivos; el sistema completo incluye además las herramientas, el entorno gráfico y los programas.

Y como armar todo eso a mano es un trabajo enorme, aparecieron las distribuciones: proyectos que juntan núcleo, herramientas y programas en un solo paquete instalable. Debian, Ubuntu, Fedora, Mint y Arch son distribuciones distintas del mismo núcleo.

Linus Torvalds hablando en un escenario durante una Linux Kernel Summit.
Linus Torvalds, el creador del núcleo Linux, en una de las conferencias donde se reúne la comunidad que lo desarrolla. Treinta y cinco años después, ese pasatiempo corre en la mayor parte de los servidores del mundo.
Foto: Julien (derivada de Linux Foundation), CC BY-SA 3.0 · Wikimedia Commons

Hoy el núcleo Linux está en los servidores de Internet, en los teléfonos con Android, en los routers, en los cajeros automáticos, en los televisores y en la totalidad de las 500 computadoras más potentes del mundo. Es tal vez el mejor ejemplo de lo que puede lograr el software libre: un proyecto que empezó como hobby y terminó siendo infraestructura crítica del planeta.

Cuadro comparativo

Vistos de lejos, los dos linajes quedan claros: uno arranca en el DOS y llega hasta el Windows de hoy; el otro arranca en Unix y llega hasta Linux, Android y el macOS de Apple.

Los dos linajes de los sistemas operativos: el del DOS, que va de MS-DOS a Windows; y el de Unix, que va de Unix a BSD y de GNU/Linux a Android y los servidores El linaje del DOS El linaje de Unix MS-DOS (1981) Windows 3.x (1990) Windows 95, 98 y ME (1995-2000) Windows actuales (núcleo NT) Unix (1969) BSD (1977) GNU/Linux (1991) Android, servidores (hoy)
Los dos caminos nunca se cruzaron: Windows no viene de Unix. Por eso el único sistema de escritorio que no desciende de Unix es Windows; macOS, Linux y Android sí.
  MS-DOS Unix Linux
Año de origen 1981 1969 1991
Dónde nació Microsoft, para la IBM PC Laboratorios Bell de AT&T Proyecto personal de Linus Torvalds
Usuarios Uno por vez Varios a la vez Varios a la vez
Tareas Una por vez Varias a la vez Varias a la vez
Interfaz Línea de comandos Línea de comandos (después, gráfica) Línea de comandos y entorno gráfico
Licencia Privativo (se licenciaba por equipo) Privativo (cada versión, de su dueño) Libre, con licencia GPL
Nombres de archivo 8 caracteres + 3 de extensión Largos, y distingue mayúsculas Largos, y distingue mayúsculas
Código fuente Cerrado Cerrado Abierto: cualquiera puede leerlo y modificarlo
Dónde se usa hoy Solo dentro de Windows (CMD) Servidores y macOS Servidores, Android, nube, supercomputadoras

Resumen

Concepto Idea central
DOS Sistema de línea de comandos de 1981, monousuario y monotarea. Sus comandos siguen vivos en el Símbolo del sistema de Windows.
Sus límites 640 KB, nombres 8.3, sin protección de memoria, sin usuarios. Todo eso obligó a buscar otro camino.
Unix Nació en 1969 en los laboratorios Bell, para equipos usados por varias personas. Trajo multiusuario, multitarea, permisos, "todo es un archivo" y los programas que se combinan.
Lenguaje C Reescribir Unix en C en 1973 lo volvió portable, y por eso se expandió a máquinas de todo tipo.
La familia Unix System V y BSD. De ahí salen Solaris, AIX, macOS y, por otro camino, el software libre.
GNU y GPL Desde 1983, el proyecto de Stallman construyó un sistema libre compatible con Unix. Le faltaba el núcleo.
Linux El núcleo que escribió Torvalds en 1991 y publicó con licencia GPL. Con las herramientas de GNU formó un sistema completo.
Distribución Paquete que reúne núcleo, herramientas y programas listos para instalar: Debian, Ubuntu, Fedora, Mint, Arch.