Emulador de terminal
Un emulador de terminal, o aplicación de terminal, es un programa de computadora que emula una terminal de video dentro de alguna otra arquitectura de visualización. Aunque normalmente es sinónimo de terminal de shell o de texto, el término terminal abarca todos los terminales remotos, incluidas las interfaces gráficas. Un emulador de terminal dentro de una interfaz gráfica de usuario a menudo se denomina ventana de terminal.
Una ventana de terminal permite al usuario acceder a un terminal de texto y todas sus aplicaciones, como interfaces de línea de comandos (CLI) y aplicaciones de interfaz de usuario de texto (TUI). Estos pueden ejecutarse en la misma máquina o en una diferente a través de telnet, ssh, acceso telefónico o mediante una conexión en serie directa. En los sistemas operativos similares a Unix, es común tener una o más ventanas de terminal conectadas a la máquina local.
Los terminales suelen admitir un conjunto de secuencias de escape para controlar el color, la posición del cursor, etc. Los ejemplos incluyen la familia de estándares de secuencias de control de terminales conocidos como ECMA-48, ANSI X3.64 o ISO/IEC 6429.
Historia
Terminales de ordenador
Un terminal "inteligente" hace su propio procesamiento, generalmente implicando un microprocesador se construye en, pero no todos los terminales con microprocesadores hicieron cualquier procesamiento real de entrada: el equipo principal al que se adjuntó tendría que responder rápidamente a cada pulsador de teclas. El término "inteligente" en este contexto data de 1969.
Entre los ejemplos notables cabe citar el IBM 2250, predecesor del IBM 3250 e IBM 5080, y el IBM 2260, predecesor del IBM 3270, introducido con System/360 en 1964.
La mayoría de los terminales estaban conectados a minicomputadoras o ordenadores mainframe y a menudo tenían una pantalla verde o ámbar. Típicamente los terminales se comunican con el ordenador a través de un puerto serie a través de un cable módem nulo, a menudo utilizando un EIA RS-232 o RS-422 o RS-423 o una interfaz de serie de bucle actual. Los sistemas IBM normalmente se comunican a través de un canal de Bus y Tag, un cable coaxial que utiliza un protocolo patentado, un enlace de comunicaciones que utiliza comunicaciones binarias sincrónicas o protocolo SNA de IBM, pero para muchos ordenadores DEC, Data General y NCR (y así sucesivamente) había muchos proveedores de pantalla visual que compitían contra el fabricante de computadoras para que los terminales ampliaran los sistemas. De hecho, el diseño de instrucciones para el Intel 8008 fue concebido originalmente en Computer Terminal Corporation como el procesador para el Datapoint 2200.Desde la introducción del IBM 3270, y el DEC VT100 (1978), el usuario y programador podían notar ventajas significativas en las mejoras de la tecnología VDU, pero no todos los programadores utilizaron las características de los nuevos terminales (compatibilidad posterior en los terminales VT100 y más tarde TeleVideo, por ejemplo, con "terminales de carga" permitieron a los programadores continuar utilizando software antiguo).
Algunos terminales tontos habían podido responder a algunas secuencias de escape sin necesidad de microprocesadores: utilizaron múltiples tableros de circuito impresos con muchos circuitos integrados; el único factor que clasificaba un terminal como "intelligent" era su capacidad de proceso entrada de usuario dentro de la terminal, sin interrumpir la computadora principal en cada pulsador de teclas, y enviar un bloque de datos a la vez (por ejemplo, cuando el usuario ha terminado un campo o forma completo). La mayoría de los terminales a principios de los años 80, como ADM-3A, TVI912, Data General D2, DEC VT52, a pesar de la introducción de los terminales ANSI en 1978, eran esencialmente terminales "dumb", aunque algunos de ellos (como los modelos ADM y TVI posteriores) tenían una capacidad de bloqueo primitiva. Los usos tempranos comunes de la potencia de procesamiento local incluyeron características que tenían poco que ver con el procesamiento de datos fuera de la carga desde el ordenador anfitrión, pero añadió características útiles como la impresión a una impresora local, la transmisión de datos serie amortiguada y el apretado de manos en serie (para adaptarse a velocidades de transferencia de serie más altas), y atributos de carácter más sofisticados para la pantalla, así como la capacidad de conmutación de los modelos de competidores, que cada vez más importantes.
El avance en microprocesadores y los costos de memoria más bajos hicieron posible que el terminal manejara operaciones de edición como insertar caracteres dentro de un campo que podría haber requerido previamente un completo llenado de caracteres para ser reenviado desde el ordenador, posiblemente por encima de una línea de módem lenta. A mediados de la década de 1980, los terminales más inteligentes, que costarían menos de la mayoría de los terminales tontos tendrían unos años antes, podrían proporcionar suficiente fácil de usar la edición local de datos y enviar el formulario completado al ordenador principal. Proporcionando aún más posibilidades de procesamiento, estaciones de trabajo como el TeleVideo TS-800 podrían ejecutar CP/M-86, desdibujando la distinción entre terminal y ordenador personal.
Otra de las motivaciones para el desarrollo del microprocesador fue simplificar y reducir la electrónica requerida en un terminal. Eso también hizo posible cargar varias "personalidades" en un único terminal, por lo que un Qume QVT-102 podría emular muchos terminales populares del día, y así ser vendido en organizaciones que no desearon hacer cambios de software. Tipos de terminales emulados frecuentemente incluidos:
- Lear Siegler ADM-3A y modelos posteriores
- TeleVideo 910 a 950 (estos modelos copiaron códigos ADM3 y agregaron varios de ellos, eventualmente siendo copiados por Qume y otros)
- Digital Equipment Corporation VT52 y VT100
- Datos generales D1 a D3 y especialmente D200 y D210
- Hazeltine Corporation H1500
- Tektronix 4014
- Wyse W50, W60 y W99
Emuladores
Eco local
Los emuladores de terminal pueden implementar una función de eco local, que puede llamarse erróneamente "half-duplex", o todavía ligeramente incorrectamente "echoplex" (que es formalmente un mecanismo de detección de errores en lugar de una opción de visualización de entrada).
Modo de línea a la vez/Edición local
Los emuladores de terminal pueden implementar la edición local, también conocida como "modo de línea a la vez". Esto también se conoce erróneamente como "semidúplex". En este modo, el emulador de terminal solo envía líneas completas de entrada al sistema host. El usuario ingresa y edita una línea, pero se mantiene localmente dentro del emulador de terminal mientras se edita. No se transmite hasta que el usuario señala su finalización, generalmente con la tecla ↵ Enter en el teclado o un "enviar" botón de algún tipo en la interfaz de usuario. En ese punto, se transmite toda la línea. El modo de línea a la vez implica un eco local, ya que de lo contrario el usuario no podrá ver la línea mientras se edita y construye. Sin embargo, el modo de línea a la vez es independiente del modo de eco y no requiere eco local. Al ingresar una contraseña, por ejemplo, es posible ingresar una línea a la vez con edición local, pero el eco local está desactivado (de lo contrario, se mostraría la contraseña).
Las complejidades del modo de línea a la vez se ejemplifican con la opción de modo de línea a la vez en el protocolo telnet. Para implementarlo correctamente, la implementación de la Terminal virtual de red proporcionada por el programa emulador de terminal debe ser capaz de reconocer y manejar correctamente las "interrupciones" y "abortar" eventos que llegan en medio de la edición local de una línea.
Terminales síncronas
(feminine)En los terminales asíncronos, los datos pueden fluir en cualquier dirección en cualquier momento. En terminales síncronos un protocolo controla quién puede enviar datos y cuándo. Los terminales basados en IBM 3270 que se utilizan con computadoras centrales de IBM son un ejemplo de terminales síncronos. Operan esencialmente en un modo de "pantalla a la vez" (también conocido como modo de bloque). Los usuarios pueden realizar numerosos cambios en una página antes de enviar la pantalla actualizada a la máquina remota como una sola acción.
Los emuladores de terminal que simulan el protocolo 3270 están disponibles para la mayoría de los sistemas operativos, tanto para aquellos que administran sistemas como el z9, como para aquellos que usan las aplicaciones correspondientes como CICS.
Otros ejemplos de terminales síncronos incluyen IBM 5250, ICL 7561, Honeywell Bull VIP7800 y Hewlett-Packard 700/92.
Consolas virtuales
Las consolas virtuales, también llamadas terminales virtuales, son terminales de texto emuladas que utilizan el teclado y el monitor de una computadora personal o estación de trabajo. La palabra "texto" es clave ya que las consolas virtuales no son terminales GUI y no se ejecutan dentro de una interfaz gráfica. Las consolas virtuales se encuentran en la mayoría de los sistemas similares a Unix. Se utilizan principalmente para acceder e interactuar con servidores, sin utilizar un entorno de escritorio gráfico.
Ejemplos de terminales emulados
Se han desarrollado muchos emuladores de terminal para terminales como VT52, VT100, VT220, VT320, IBM 3270/8/9/E, IBM 5250, IBM 3179G, Data General D211, Hewlett Packard HP700/92, Sperry/Unisys 2000 -serie UTS60, Burroughs/Unisys A-series T27/TD830/ET1100, ADDS ViewPoint, Sun console, QNX, AT386, SCO-ANSI, SNI 97801, Televideo y Wyse 50/60. Además, se han desarrollado programas para emular otros emuladores de terminales como xterm y una variedad de terminales de consola (por ejemplo, para Linux). Finalmente, algunos emuladores simplemente hacen referencia a un estándar, como ANSI. Dichos programas están disponibles en muchas plataformas, desde DOS y Unix hasta Windows y macOS, hasta sistemas operativos integrados que se encuentran en teléfonos móviles y hardware industrial.
Detalles de implementación
Sistemas similares a Unix
En el pasado, los sistemas Unix y similares a Unix usaban dispositivos de puerto serie, como puertos RS-232, y proporcionaban /dev/*
archivos de dispositivo para ellos.
Con los emuladores de terminal, esos archivos de dispositivo se emulan mediante el uso de un par de dispositivos de pseudoterminal. Este par se usa para emular una conexión/puerto físico al punto final informático del host: el hardware de la computadora proporcionado por las API del sistema operativo, algún otro software como rlogin, telnet o SSH u otros. Por ejemplo, en los sistemas Linux, estos serían /dev/ptyp0
(para el lado maestro) y /dev/ttyp0
(para el lado esclavo) dispositivos pseudoterminales respectivamente.
También hay archivos de consola virtual especiales como /dev/console
. En el modo de texto, escribir en el archivo muestra el texto en la consola virtual y leer del archivo devuelve el texto que el usuario escribe en la consola virtual. Al igual que con otros terminales de texto, también hay secuencias de escape especiales, caracteres de control y funciones que un programa puede usar, más fácilmente a través de una biblioteca como ncurses. Para operaciones más complejas, los programas pueden usar llamadas al sistema ioctl especiales de consola y terminal. Se pueden comparar dispositivos utilizando los patrones vcs ("pantalla de consola virtual") y vcsa ("pantalla de consola virtual con atributos") como /dev/vcs1
y /dev/vcsa1.
Algunos emuladores de terminal también incluyen secuencias de escape para configurar el comportamiento del terminal a fin de facilitar una buena interoperabilidad entre el terminal y los programas que se ejecutan dentro de él, por ejemplo, para configurar el soporte de pegado.
Las consolas virtuales se pueden configurar en el archivo /etc/inittab
que lee init; por lo general, inicia el proceso de inicio de sesión en modo texto getty para varias consolas virtuales. El sistema X Window se puede configurar en /etc/inittab
o mediante un administrador de pantalla X. Varias distribuciones de Linux usan systemd en lugar de init, lo que también permite la configuración de la consola virtual.
Herramientas CLI
Los programas típicos del sistema Linux que se utilizan para acceder a las consolas virtuales incluyen:
chvt
para cambiar la consola virtual actualopenvt
para ejecutar un programa en una nueva consola virtualdeallocvt
para cerrar una consola virtual no utilizada
Carga del sistema
El programa startx inicia el sistema X Window en una nueva consola virtual. También hay otros programas gráficos que pueden iniciarse desde la consola (por ejemplo, LinuxTV y MPlayer, etc.)
Contenido relacionado
Miguel de icaza
Pionero 11
El Hombre-Mes Mítico