¿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á.
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.
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.
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 |
|---|---|
DIR | Lista los archivos y carpetas del directorio actual. |
CD | Cambia de directorio (change directory). CD.. sube uno. |
MD · RD | Crea y borra directorios. |
COPY · MOVE | Copia y mueve archivos. |
DEL · REN | Borra archivos y los renombra. |
TYPE | Muestra en pantalla el contenido de un archivo de texto. |
EDIT | Editor de texto del sistema (antes, EDLIN). |
FORMAT | Da formato a un disco, dejándolo vacío. |
CLS | Limpia la pantalla. |
HELP | Muestra 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.
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."
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.
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.
| 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. |