RT-11 ( Real-time 11 ) es un sistema operativo en tiempo real de usuario único , pequeño y de gama baja que ya no se fabrica [2] para la línea completa de computadoras PDP-11 de 16 bits de Digital Equipment Corporation . RT-11 se implementó por primera vez en 1970. Se utilizó ampliamente para sistemas de computación en tiempo real , control de procesos y adquisición de datos en todas las PDP-11. También se utilizó para computación de uso general de bajo costo. [2]
RT-11 se escribió en lenguaje ensamblador . El uso intensivo de las funciones de ensamblaje condicional y programación de macros del ensamblador MACRO-11 permitió un grado significativo de configurabilidad y permitió a los programadores especificar instrucciones de alto nivel que de otro modo no se habrían previsto en el código de máquina. Las distribuciones RT-11 incluían el código fuente del sistema operativo y sus controladores de dispositivos con todos los comentarios eliminados y un programa llamado "SYSGEN" que compilaba el sistema operativo y los controladores de acuerdo con una configuración especificada por el usuario. La documentación del desarrollador incluía una lista del núcleo que incluía comentarios.
En RT-11, los controladores de dispositivos [3] [4] eran cargables, excepto que antes de V4.0 el controlador de dispositivo para el dispositivo del sistema (dispositivo de arranque) estaba integrado en el núcleo en el momento de la configuración. Debido a que RT-11 se usaba comúnmente para el control de dispositivos y la adquisición de datos, era común que los desarrolladores escribieran o mejoraran los controladores de dispositivos. DEC fomentó dicho desarrollo de controladores haciendo que sus subsistemas de hardware (desde la estructura del bus hasta el código) fueran abiertos, documentando los componentes internos del sistema operativo, alentando a los proveedores de hardware y software de terceros y fomentando el desarrollo de la Digital Equipment Computer Users Society .
Los sistemas RT-11 no soportaban multitarea preventiva , pero la mayoría de las versiones podían ejecutar múltiples aplicaciones simultáneamente. Todas las variantes de los monitores proporcionaban un trabajo en segundo plano . Los monitores FB, XM y ZM también proporcionaban un trabajo en primer plano y seis trabajos del sistema si se seleccionaban a través del programa de generación del sistema SYSGEN . Estas tareas tenían prioridades fijas , con el trabajo en segundo plano más bajo y el trabajo en primer plano más alto. Era posible cambiar entre trabajos desde la interfaz de usuario de la consola del sistema , y SYSGEN podía generar un monitor que proporcionaba un solo trabajo en segundo plano (las variantes SB, XB y ZB). [2] Los términos primer plano y segundo plano son contraintuitivos; el trabajo en segundo plano era típicamente el intérprete de línea de comandos del usuario ; un trabajo en primer plano podría estar haciendo algo como la recopilación de datos no interactiva.
Los usuarios generalmente operaban el RT-11 a través de un terminal de impresión o un terminal de video , originalmente a través de un bucle de corriente seleccionable por correa (para teletipos convencionales) o a través de una interfaz RS-232 (más tarde también RS-422 ) en una de las tarjetas de CPU; DEC también admitía los dispositivos de visualización de gráficos VT11 y VS60 ( terminales de gráficos vectoriales con un generador de caracteres gráficos para mostrar texto y un lápiz óptico para entrada gráfica). Un favorito de terceros era la familia Tektronix 4010 .
El monitor de teclado (KMON) interpretaba los comandos emitidos por el usuario e invocaba varias utilidades con formatos de intérprete de cadenas de comandos (CSI) de los comandos. El lenguaje de comandos RT-11 tenía muchas características (como comandos y nombres de dispositivos) que se pueden encontrar más tarde en la línea de sistemas operativos DOS que tomaron prestado en gran medida de RT-11. La forma CSI esperaba nombres de archivos de entrada y salida y opciones ('interruptores' en RT-11) en un orden y sintaxis precisos. Los interruptores de la línea de comandos estaban separados por una barra ( /
) en lugar del guión ( -
) utilizado en los sistemas operativos tipo Unix . Todos los comandos tenían una forma completa y una corta a la que podían contraerse. Por ejemplo, el comando RENAME podía contraerse a REN .
Los archivos por lotes y el procesador por lotes se podían utilizar para emitir una serie de comandos con un flujo de control rudimentario . Los archivos por lotes tenían la extensión .BAT.
En versiones posteriores de RT-11, era posible invocar una serie de comandos mediante un archivo de comandos .COM, pero se ejecutaban en secuencia sin control de flujo. Incluso más tarde, era posible ejecutar una serie de comandos con gran control mediante el uso del procesador de archivos de comandos indirectos (IND), que tomaba archivos de control .CMD como entrada.
Los archivos con la extensión .SAV eran una especie de ejecutables. Se los conocía como "archivos de guardado" porque el comando RT-11 SAVE podía utilizarse para guardar el contenido de la memoria en un archivo de disco que podía cargarse y ejecutarse más tarde, lo que permitía guardar cualquier sesión.
El comando SAVE, junto con GET, START , REENTER, EXAMINE y DEPOSIT fueron comandos básicos implementados en KMON. Algunos comandos y utilidades fueron tomados prestados posteriormente en la línea de sistemas operativos DOS . Estos comandos incluyen DIR , COPY , RENAME , ASSIGN , CLS , DELETE , TYPE , HELP y otros. El comando FORMAT se utilizó para formatear discos físicos, aunque no era capaz de crear sistemas de archivos, para lo cual se utilizó el comando INIT (análogo del comando DOS FORMAT /Q). La mayoría de los comandos admitían el uso de comodines en los nombres de archivo.
Los nombres de los dispositivos físicos se especificaban en el formato 'dd{n}:' donde 'dd' era un nombre de dispositivo alfabético de dos caracteres y el 'n' opcional era el número de unidad (0–7). Cuando se omitía el número de unidad, se asumía la unidad 0. Por ejemplo, TT: hacía referencia a la terminal de consola, LP: (o LP0:) hacía referencia a la impresora de línea paralela y DX0:, DY1:, DL4: hacía referencia a volúmenes de disco (RX01 unidad 0, RX02 unidad 1, RL01 o RL02 unidad 4, respectivamente). Los nombres de dispositivos lógicos constaban de 1 a 3 caracteres alfanuméricos y se usaban en lugar de un nombre de dispositivo físico. Esto se lograba utilizando el ASSIGN
comando. Por ejemplo, se podría emitir ASSIGN DL0 ABC
lo que haría que todas las referencias futuras a 'ABC:' se asignaran a 'DL0:'. El nombre lógico reservado DK: hacía referencia al dispositivo predeterminado actual. Si un dispositivo no estaba incluido en una especificación de archivo, se asumía DK:. Nombre lógico reservado SY: hace referencia al dispositivo del sistema (el dispositivo desde el que se había iniciado el sistema).
Las versiones posteriores de RT-11 permitían la especificación de hasta 64 unidades (0–77 octal) para ciertos dispositivos, pero el nombre del dispositivo todavía estaba limitado a tres caracteres alfanuméricos. Esta característica se habilitaba mediante una selección de SYSGEN y solo se aplicaba a los controladores de dispositivos DU y LD. En estos dos casos, el formato del nombre del dispositivo se convirtió en 'dnn:' donde 'd' era 'D' para el dispositivo DU y 'L' para el dispositivo LD, y 'nn' era 00–77 (octal).
RT-11 se distribuyó con utilidades para realizar muchas acciones. Las utilidades DIR , DUP , PIP y FORMAT se usaban para administrar volúmenes de disco. TECO , EDIT y los editores visuales KED (para el DEC VT100 ) y K52 (para el DEC VT52 ) se usaban para crear y editar archivos de origen y de datos. MACRO , LINK y LIBR se usaban para crear ejecutables. ODT , VDT y el dispositivo SD se usaban para depurar programas. La versión de Runoff de DEC [5] se usaba para producir documentos. Finalmente, VTCOM se usaba para conectarse y usar (o transferir archivos hacia y desde) otro sistema informático por teléfono mediante un módem.
El sistema era lo suficientemente completo como para manejar muchas tareas de computación personal modernas. El software de productividad como LEX-11, un paquete de procesamiento de textos y una hoja de cálculo de Saturn Software, utilizados en otros sistemas operativos PDP-11, también se ejecutaban en RT-11. [6] Grandes cantidades de software gratuito, contribuido por los usuarios para RT-11 estaban disponibles en la Digital Equipment Computer Users Society (DECUS), incluida una implementación de C. Aunque se proporcionaron las herramientas para desarrollar y depurar programas en lenguaje ensamblador, otros lenguajes, incluidos C, Fortran , Pascal , [7] y varias versiones de BASIC , estaban disponibles en DEC como "productos en capas" a un costo adicional. Las versiones de estos y otros lenguajes de programación también estaban disponibles en otras fuentes de terceros. Incluso es posible conectar en red máquinas RT-11 utilizando DECNET , Internet y protocolos desarrollados por otras fuentes de terceros.
El sistema operativo RT-11 podía arrancar y realizar tareas útiles en una máquina que constara de dos disquetes de 250 KB de 8 pulgadas y 56 KB de memoria, y podía admitir 8 terminales. Otras opciones de arranque incluían el disco duro extraíble RK05 de 2,5 MB o la cinta magnética . Las distribuciones estaban disponibles preinstaladas o en cinta perforada , cinta magnética, cinta de cartucho o disquete. Un sistema mínimo pero completo que admitiera un solo usuario en tiempo real podía ejecutarse en un solo disquete y en 8K de palabras de 16 bits (16 KB) de RAM, incluidos los programas de usuario. Esto se facilitaba gracias al soporte para intercambio y superposición. Para realizar la operación en un sistema de memoria tan pequeña, la interfaz de usuario de comandos del teclado se intercambiaba durante la ejecución del programa de un usuario y luego se intercambiaba en la memoria al finalizar el programa. El sistema soportaba un reloj en tiempo real , terminal de impresión, unidad gráfica vectorial VT11, convertidor A/D de 16 canales de 100 kHz con D/A de 2 canales, puerto serial de 9600 baudios, placas bidireccionales de 16 bits, etc.
RT-11 implementó un sistema de archivos simple y rápido que empleaba nombres de archivos de seis caracteres con extensiones de tres caracteres (6.3) codificados en RADIX-50 , que empaquetaba esos nueve caracteres en solo tres palabras de 16 bits (seis bytes). Esto dio como resultado que los caracteres permitidos para los nombres de archivos fueran 'A'-'Z', 'a'-'z' forzados a mayúsculas, '0'-'9', '$', '%', '*'. Los nombres de archivos podían tener como prefijo el nombre de un dispositivo para especificar un dispositivo diferente al DK predeterminado: device, también codificado en RADIX-50.
Todos los archivos eran contiguos, lo que significa que cada archivo ocupaba bloques consecutivos (la unidad mínima direccionable de almacenamiento en disco, 512 bytes) en el disco. Esto significaba que un archivo completo podía leerse (o escribirse) muy rápidamente. Un efecto secundario de esta estructura de sistema de archivos era que, a medida que se creaban y eliminaban archivos en un volumen a lo largo del tiempo, los bloques de disco no utilizados probablemente no permanecerían contiguos , lo que podría convertirse en el factor limitante en la creación de archivos grandes; el remedio era "comprimir" periódicamente un disco para consolidar las partes no utilizadas. [8] [9]
Cada volumen tiene un solo directorio que fue asignado previamente al comienzo del volumen. El directorio consta de una matriz de entradas, una por archivo o espacio no asignado. Cada entrada de directorio tiene 8 (o más) palabras de 16 bits, aunque una opción sysgen permitió almacenamiento adicional específico de la aplicación. [10]
Muchos programas RT-11 (aquellos que no necesitaban periféricos especializados o acceso directo al hardware) podían ejecutarse directamente utilizando el RT=11 RTS ( Run-time system ) del sistema de tiempo compartido RSTS/E o bajo RTEM (RT Emulator) en varias versiones de RSX-11 y VMS .
La implementación de DCL para RT-11 aumentó su compatibilidad con los demás sistemas operativos DEC. Si bien cada sistema operativo tenía comandos y opciones que eran exclusivos de ese sistema operativo, había una serie de comandos y opciones de comandos que eran comunes.
DEC también vendió RSX-11 , un sistema operativo multiusuario y multitarea con funciones en tiempo real, y RSTS/E (originalmente llamado RSTS-11), un sistema multiusuario de tiempo compartido, pero RT-11 siguió siendo el sistema operativo de elección para los sistemas de adquisición de datos donde se requería una respuesta en tiempo real. El sistema operativo Unix también se hizo popular, pero carecía de las funciones en tiempo real y del tamaño extremadamente pequeño de RT-11.
El RT-11 se ejecutaba en todos los miembros de la familia DEC PDP-11, tanto los basados en Q-Bus como en Unibus , desde el PDP-11/05 (su primer objetivo, en 1970 (nótese que el PDP-11/05 se lanzó en 1972, por lo que probablemente se trataba de un PDP-11/20)), hasta las implementaciones finales del PDP-11 (PDP-11/93 y /94). Además, se ejecutaba en los sistemas Professional Series y PDT-11 "Programmed Data Terminal", también de DEC. Dado que la arquitectura PDP-11 se implementó en productos de reemplazo de otras empresas (por ejemplo, el M100 y la familia de Mentec ), o como clones de ingeniería inversa en otros países (por ejemplo, el DVK de la Unión Soviética), el RT-11 también se ejecuta en estas máquinas.
Agregar compatibilidad con controladores para periféricos como un trazador CalComp , [11] generalmente implicaba copiar archivos y no requería un SYSGEN. [2]
Fuzzball , un software de enrutamiento para protocolos de Internet , era capaz de ejecutar programas RT-11. [12]
HAMMONDsoftware distribuyó varios sistemas operativos compatibles con RT-11, entre ellos STAReleven, uno de los primeros sistemas multiordenador, y SHAREplus, una implementación multiproceso/multiusuario de RT-11 que tomó prestados algunos conceptos arquitectónicos del sistema operativo VAX/VMS . Para el funcionamiento del RT-11 se necesitaban controladores de dispositivos. El acceso transparente a dispositivos con otros PDP-11 y VAX/VMS se admitía mediante una opción de red. También estaba disponible una compatibilidad limitada con aplicaciones RSX-11 . SHAREplus tenía su base de usuarios más sólida en Europa.
TSX-11 , [13] desarrollado por S&H Computing, era una implementación multiusuario y multiprocesamiento de RT-11. Lo único que no hacía era manejar el proceso de arranque, por lo que cualquier máquina TSX-Plus debía arrancar RT-11 primero antes de ejecutar TSX-Plus como programa de usuario. Una vez que TSX-Plus se estaba ejecutando, asumía el control completo de la máquina de RT-11. Proporcionaba una verdadera protección de memoria para los usuarios frente a otros usuarios, proporcionaba cuentas de usuario y mantenía la separación de cuentas en los volúmenes de disco e implementaba un superconjunto de las solicitudes programadas EMT de RT-11.
S&H escribió el TSX original porque "Gastar $25.000 en una computadora que solo podía admitir un usuario molestaba [al fundador Harry Sanders]"; el resultado fue el TSX inicial para cuatro usuarios en 1976. [14] TSX-Plus (lanzado en 1980) fue el sucesor de TSX, lanzado en 1976. [14] El sistema fue popular en la década de 1980. Los programas RT-11 generalmente se ejecutaban, sin modificaciones, bajo TSX-Plus y, de hecho, la mayoría de las utilidades RT-11 se usaban tal como estaban bajo TSX-Plus. Los controladores de dispositivos generalmente requerían solo modificaciones leves.
Dependiendo del modelo de PDP-11 y de la cantidad de memoria, el sistema podría soportar un mínimo de 12 usuarios [14] (14-18 usuarios en un 11/73 de 2 Mb, dependiendo de la carga de trabajo). [15] La última versión de TSX-Plus tenía soporte TCP/IP .
Los usuarios pueden elegir entre variantes con diferentes niveles de soporte para multitarea , tamaño de memoria y espacio de direcciones I&D (Instrucción y Datos) separado:
Se vendieron varios sistemas especializados PDP-11 basados en RT-11:
En la URSS se fabricaron varios clones del RT-11:
Comprima el volumen utilizando el comando SQUEEZE del monitor
El comando SQUEEZE consolida en una sola área todos los archivos no utilizados...
Uso compartido eficiente y de propósito general para hasta 20 usuarios el 23 y 34 de noviembre...