TENEX es un sistema operativo desarrollado en 1969 por BBN para el PDP-10 , que luego formó la base del sistema operativo TOPS-20 de Digital Equipment Corporation .
En la década de 1960, BBN participó en varios proyectos de inteligencia artificial basados en LISP para DARPA , muchos de los cuales tenían requisitos de memoria muy grandes (para la época). Una solución a este problema fue agregar software de paginación al lenguaje LISP , lo que le permitía escribir porciones de memoria no utilizadas en el disco para recuperarlas más tarde si fuera necesario. Daniel Murphy había desarrollado uno de esos sistemas para el PDP-1 en el MIT antes de unirse a BBN. Las primeras máquinas DEC se basaban en una palabra de 18 bits , lo que permitía codificar direcciones para una memoria de 256 kilopalabras . Las máquinas se basaban en una memoria central costosa e incluían una cantidad muy inferior a la requerida. El buscapersonas usaba los bits más significativos de la dirección para indexar una tabla de bloques en un tambor magnético que actuaba como almacenamiento de respaldo del buscapersonas . El software obtenía las páginas si era necesario y luego resolvía la dirección en el área adecuada de RAM .
En 1964, DEC anunció el PDP-6 . DEC todavía estaba muy involucrado con el Laboratorio de IA del MIT, y muchas de las solicitudes de características de los hackers de LISP se trasladaron a esta máquina. La computación de 36 bits era especialmente útil para la programación LISP porque con un espacio de direcciones de 18 bits, una palabra de almacenamiento en estos sistemas contenía dos direcciones, una combinación perfecta para las operaciones comunes de CAR y CDR de LISP . BBN se interesó en comprar uno para su trabajo de IA cuando estuviera disponible, pero quería que DEC añadiera una versión de hardware del buscapersonas de Murphy directamente al sistema. Con tal adición, cada programa en el sistema tendría soporte de paginación de forma invisible, lo que facilitaría mucho la programación. DEC estaba inicialmente interesado, sin embargo, en 1966 anunció que descontinuarían el PDP-6 y se concentrarían únicamente en sus líneas más pequeñas de 18 bits y las nuevas de 16 bits. El PDP-6 era caro y complejo, y por lo tanto no se había vendido bien.
No pasó mucho tiempo hasta que quedó claro que DEC estaba entrando de nuevo en el negocio de los 36 bits con lo que se convertiría en el PDP-10 . BBN inició conversaciones con DEC para obtener un subsistema de paginación en la nueva máquina, entonces conocida por su nombre de CPU, el KA-10. DEC no estaba interesado; sin embargo, un desarrollo de estas conversaciones fue el soporte en el PDP-10 para un segundo segmento de memoria virtual, lo que permite que la mitad del espacio de direcciones del usuario se asigne a una región separada (potencialmente de solo lectura) de la memoria física. Además, DEC insistió en mantener el costo de la máquina lo más bajo posible, como por ejemplo, soportar sistemas con un mínimo de 16K palabras de núcleo y omitir la opción de registro de semiconductor rápido (sustituyendo el núcleo), a costa de una disminución considerable del rendimiento.
Sin embargo, BBN siguió adelante con la compra de varias PDP-10 y decidió construir su propio localizador de dispositivos. [1] Durante este período se inició un debate sobre qué sistema operativo ejecutar en las nuevas máquinas. Se presentaron sólidos argumentos a favor de seguir utilizando TOPS-10, con el fin de mantener su software existente funcionando con el mínimo esfuerzo. Esto requeriría una reescritura de TOPS-10 para soportar el sistema de localizador, y esto parecía un problema importante. Al mismo tiempo, TOPS-10 no soportaba una serie de características que los desarrolladores querían. Al final decidieron hacer un nuevo sistema, pero incluir una biblioteca de emulación que le permitiera ejecutar el software TOPS-10 existente con un mínimo esfuerzo.
El equipo de desarrolladores, entre ellos Daniel Murphy y Daniel G. Bobrow , eligió el nombre TENEX (TEN-EXtended) para el nuevo sistema. Incluía un sistema de memoria virtual completo , es decir, no sólo los programas podían acceder a un espacio de direcciones de 18 bits completo de 262144 palabras de memoria virtual, sino que todos los programas podían hacerlo al mismo tiempo. El sistema de buscapersonas manejaría la asignación como siempre lo haría, copiando datos hacia y desde la memoria de respaldo según fuera necesario. El único cambio necesario era que el buscapersonas pudiera almacenar varios conjuntos de asignaciones entre la RAM y la memoria, uno para cada programa que usara el sistema. El buscapersonas también almacenaba información sobre el tiempo de acceso para ajustar el rendimiento. El buscapersonas resultante era bastante complejo y llenaba un chasis de montaje en rack de 19" de altura completa.
Una característica notable de TENEX era su intérprete de línea de comandos orientado al usuario . A diferencia de los sistemas típicos de la época, TENEX usaba deliberadamente nombres de comandos largos e incluso incluía palabras de ruido no significativas para expandir aún más los comandos para mayor claridad. Por ejemplo, Unix usaba ls
para imprimir una lista de archivos en un directorio, mientras que TENEX usaba DIRECTORY (OF FILES)
. " DIRECTORY
" era la palabra de comando, " (OF FILES)
" era ruido agregado para aclarar el propósito del comando. Para aliviar a los usuarios de la necesidad de escribir estos comandos largos, TENEX usaba un sistema de finalización de comandos que entendía palabras de comando abreviadas de manera inequívoca y expandía palabras de comando parciales en palabras o frases completas. Por ejemplo, el usuario podía escribir DIR
y la tecla de escape, momento en el cual TENEX reemplazaría DIR
con el comando completo. La función de finalización también funcionaba con nombres de archivo, lo que requería algo de esfuerzo por parte del intérprete, y el sistema permitía nombres de archivo largos con descripciones legibles para humanos. TENEX también incluía un sistema de ayuda para el reconocimiento de comandos : al escribir un signo de interrogación ( ?
), se imprimía una lista de posibles comandos coincidentes y luego se devolvía al usuario a la línea de comandos sin el signo de interrogación. La ayuda y el completado de la línea de comandos siguen estando presentes en las CLI actuales como tcsh .
TENEX se volvió bastante popular en el pequeño mercado de PDP-10, y el hardware de buscapersonas externo se convirtió en una pequeña empresa por sí mismo. A principios de 1970, DEC comenzó a trabajar en una actualización del procesador PDP-10, el KI-10. BBN intentó una vez más que DEC admitiera un buscapersonas complejo con tablas de páginas indirectas, pero en su lugar DEC decidió utilizar un sistema de mapeo de páginas de un solo nivel mucho más simple. Este compromiso afectó las ventas del sistema; en ese momento, TENEX era el sistema operativo PDP-10 escrito por clientes más popular, pero no funcionaba en los nuevos KI-10 más rápidos.
Para corregir este problema, el gerente de ventas de la PDP-10 de DEC compró los derechos de TENEX a BBN y organizó un proyecto para trasladarlo a la nueva máquina. En esa época, Murphy también pasó de BBN a DEC y colaboró en el proyecto de traslado. La mayor parte del trabajo se centró en emular el hardware del buscapersonas de BBN en una combinación de software y el hardware más simple de la KI-10. La velocidad de la KI-10 en comparación con la PDP-6 hizo que esto fuera posible. Además, el esfuerzo de traslado requirió una serie de nuevos controladores de dispositivos para soportar los nuevos dispositivos de almacenamiento de respaldo que se estaban utilizando.
Justo cuando se estaba distribuyendo el nuevo TENEX, DEC comenzó a trabajar en el KL-10, que pretendía ser una versión de bajo costo del KI-10. Mientras esto sucedía, los programadores de IA de la Universidad de Stanford , muchos de ellos ex alumnos del MIT , estaban trabajando en su propio proyecto para construir un PDP-10 que fuera diez veces más rápido que el KA-10 original. El proyecto evolucionó hacia la línea de computadoras Foonly . DEC los visitó y muchas de sus ideas se incorporaron al proyecto KL-10. El mismo año, IBM también anunció su propia máquina con memoria virtual, lo que la convirtió en un requisito estándar para cualquier computadora. Al final, el KL integró una serie de cambios importantes en el sistema, pero no terminó siendo más económico. Desde el principio, el nuevo DECSYSTEM-20 ejecutaría una versión de TENEX como su sistema operativo predeterminado.
Las mejoras funcionales para la arquitectura del procesador KL-10 fueron limitadas. La característica nueva más significativa (llamada direccionamiento extendido ) fue un microcódigo de buscapersonas modificado que se ejecutaba en una revisión de hardware del Modelo B para ampliar el espacio de dirección virtual del usuario. Algunos cálculos de dirección efectivos por instrucciones ubicadas más allá del espacio de dirección original de 18 bits se realizaron a 30 bits significativos, aunque solo se admitía un espacio de dirección virtual de 23 bits. El código de programa ubicado en el espacio de dirección original de 18 bits tenía una semántica sin cambios, para compatibilidad con versiones anteriores .
El primer nombre en código interno para el sistema operativo fue VIROS (sistema operativo de memoria virtual); cuando los clientes comenzaron a hacer preguntas, el nombre se cambió a SNARK para que DEC pudiera negar con veracidad que hubiera algún proyecto llamado VIROS. Cuando se conoció el nombre SNARK, se invirtió brevemente para convertirse en KRANS; esto se abandonó rápidamente cuando alguien objetó que "krans" significaba "corona fúnebre" en sueco (aunque simplemente significa "corona"; esta parte de la historia puede ser apócrifa).
Finalmente, DEC eligió TOPS-20 como nombre del sistema operativo, y fue como TOPS-20 como se comercializó. La comunidad hacker , consciente de sus orígenes, rápidamente lo bautizó como TWENEX (una combinación de "twenty TENEX"), aunque en ese momento quedaba muy poco del código TENEX original (de manera análoga a las diferencias entre AT&T V7 Unix y BSD ). La gente de DEC se estremeció cuando oyó "TWENEX", pero el término se popularizó de todos modos (también se utilizó la abreviatura escrita "20x"). [2]
TWENEX tuvo éxito y fue muy popular; de hecho, hubo un período a principios de los años 1980 en el que generó una cultura de partidarios tan fervientes como Unix o ITS , pero la decisión de DEC de eliminar todos los rivales internos de la arquitectura VAX y su sistema operativo VMS acabó con DEC-20 y puso fin al breve período de popularidad de TWENEX. DEC intentó convencer a los usuarios de TOPS-20 para que se pasaran a VMS, pero en cambio, a finales de los años 1980, la mayoría de los usuarios de TOPS-20 habían migrado a Unix. Un grupo leal de entusiastas de TOPS-20 siguió trabajando en varios proyectos para preservar y extender TOPS-20, en particular Mark Crispin y la distribución Panda TOPS-20.