Un emulador de terminal , o aplicación de terminal , es un programa informático que emula un terminal de vídeo dentro de alguna otra arquitectura de pantalla. Aunque suele ser sinónimo de terminal de shell o de texto , el término terminal cubre 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 las interfaces de línea de comandos (CLI) y las 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 serie directa . En sistemas operativos tipo Unix , es común tener una o más ventanas de terminal conectadas a la máquina local.
Los terminales generalmente admiten 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 secuencia de control de terminales conocida como ECMA-48 , ANSI X3.64 o ISO/IEC 6429 .
En los primeros días de la informática, con la llegada de la informática interactiva, el modelo predominante implicaba una computadora central conectada a múltiples terminales. [1] Esta configuración, conocida como modelo centralizado o mainframe, presentaba una potente computadora central que realizaba todas las tareas de procesamiento, mientras que los terminales servían como dispositivos de entrada/salida para que los usuarios interactuaran con el sistema. Inicialmente, estos sistemas se basaban en caracteres.
Un terminal orientado a caracteres es un tipo de terminal de computadora que se comunica con su host un carácter a la vez, a diferencia de un terminal orientado a bloques que se comunica en bloques de datos. Es el tipo de terminal de datos más común, porque es fácil de implementar y programar. La conexión a la computadora central o al servidor terminal se logra a través de enlaces seriales RS-232, Ethernet u otros protocolos propietarios .
Los terminales orientados a caracteres pueden ser "tontos" o "inteligentes". Los terminales tontos [2] son aquellos que pueden interpretar un número limitado de códigos de control (CR, LF, etc.) pero no tienen la capacidad de procesar secuencias de escape especiales que realicen funciones como borrar una línea, borrar la pantalla o controlar posición del cursor. En este contexto, los terminales tontos a veces reciben el nombre de Teletipos de cristal , porque esencialmente tienen la misma funcionalidad limitada que un Teletipo mecánico. Este tipo de terminal tonto todavía es compatible con sistemas modernos tipo Unix configurando la variable de entornoTERM
en dumb
. Terminales inteligentes o inteligentes son aquellos que también tienen la capacidad de procesar secuencias de escape, en particular las secuencias de escape VT52, VT100 o ANSI.Cuando las computadoras personales se volvieron omnipresentes en la década de 1980, ofrecieron la opción de ejecutar software en la computadora personal del usuario, brindando la oportunidad de reemplazar terminales de hardware costosos y que consumen mucho espacio con algo que tuviera funciones adicionales. [3] Inmediatamente estuvo disponible un software que podía emular las funciones de los terminales de hardware de un PC. Ejemplos de este tipo de software para DOS fueron Telix o Telemate, que se publicó en 1988 y podía emular un terminal DEC VT102. [4]
Las estaciones de trabajo , que generalmente ejecutan versiones de Unix , también se volvieron comunes en la década de 1980. Los sistemas Unix generalmente proporcionaban acceso a la línea de comando con terminales conectados localmente o de acceso telefónico. Las estaciones de trabajo Unix fueron diseñadas para usarse principalmente a través de una interfaz gráfica de usuario (GUI); Para proporcionar acceso a la línea de comandos, la GUI incluía aplicaciones de emulador de terminal que se comportaban como terminales conectados localmente.
Durante la década de 1990, llegaron nuevos sistemas operativos como Windows y OS/2 , que proporcionaron la base técnica para más emuladores de terminales como Telix para Windows, ZOC para OS/2 o PuTTY , que se lanzó inicialmente para Windows en 1998 y que (junto con sus derivados) sigue siendo una opción muy popular hasta el día de hoy. [5]
Gracias al éxito de Linux , especialmente ejecutándose en centros de datos y servidores en la nube, [6] [ enlace muerto ] persiste la necesidad de acceder a computadoras remotas a través de terminales basadas en caracteres. Esto es evidente en el hecho de que hoy en día las listas de emuladores de terminales que podrían servir como alternativa al mencionado PuTTY ofrecen más de 100 alternativas. [7] [ dudoso – discutir ]
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 serie 2000. UTS60 , Burroughs/Unisys A-series T27/TD830/ET1100, ADDS ViewPoint, consola Sun , 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 . Estos 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.
En el pasado, Unix y sistemas similares utilizaban dispositivos de puerto serie, como puertos RS-232 , y les proporcionaban /dev/*
archivos de dispositivo . [8]
Con los emuladores de terminal, esos archivos de dispositivo se emulan mediante el uso de un par de dispositivos pseudoterminales . Este par se utiliza para emular un puerto/conexión físico al punto final de la computadora host: el hardware de la computadora proporcionado por las API del sistema operativo, algún otro software como rlogin , telnet o SSH , etc. [9] Por ejemplo, en 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 especiales de consola virtual/dev/console
como . En modo texto, escribir en el archivo muestra texto en la consola virtual y leer el archivo devuelve el texto que el usuario escribe en la consola virtual. Al igual que con otras terminales de texto , también existen 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 utilizar llamadas especiales al sistema ioctl 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
. [10]
Algunos emuladores de terminal también incluyen secuencias de escape para configurar el comportamiento del terminal para facilitar una buena interoperación entre el terminal y los programas que se ejecutan dentro de él, por ejemplo, para configurar el pegado entre corchetes .
Las consolas virtuales se pueden configurar en el archivo /etc/inittab
leído por init ; normalmente 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 utilizan systemd en lugar de init , lo que también permite la configuración de la consola virtual.
Los programas típicos del sistema Linux utilizados para acceder a las consolas virtuales incluyen:
chvt
para cambiar la consola virtual actualopenvt
ejecutar un programa en una nueva consola virtualdeallocvt
para cerrar una consola virtual actualmente no utilizadaLos emuladores de terminal pueden implementar una función de eco local , que puede denominarse erróneamente " half-duplex ", o aún ligeramente incorrectamente "echoplex" (que formalmente es un mecanismo de detección de errores en lugar de una opción de visualización de entrada). [11] [12] [13] [14]
Los emuladores de terminal pueden implementar la edición local, también conocida como "modo línea a la vez". Esto también se conoce erróneamente como " semidúplex ". [ cita necesaria ] 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 indica su finalización, generalmente con la ↵ Entertecla del teclado o un botón de "enviar" de algún tipo en la interfaz de usuario. En ese punto, se transmite toda la línea. El modo línea a la vez implica eco local, ya que de lo contrario el usuario no podrá ver la línea mientras se edita y construye. [11] [15] Sin embargo, el modo línea a la vez es independiente del modo eco y no requiere eco local. Al ingresar una contraseña, por ejemplo, es posible ingresar línea a la vez con edición local, pero el eco local está desactivado (de lo contrario, se mostrará la contraseña). [16]
Las complejidades del modo línea a la vez se ejemplifican con la opción de modo línea a la vez en el protocolo telnet. Para implementarlo correctamente, la implementación de Network Virtual Terminal proporcionada por el programa emulador de terminal debe ser capaz de reconocer y tratar adecuadamente los eventos de "interrupción" y "aborto" que llegan en medio de la edición local de una línea. [17]
En 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 utilizados con computadoras centrales IBM son un ejemplo de terminales síncronos . Operan en un modo esencialmente de "pantalla a la vez" (también conocido como modo de bloqueo ). 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, para uso tanto de aquellos que administran sistemas como el z9 , como de aquellos que utilizan las aplicaciones correspondientes como CICS .
Otros ejemplos de terminales síncronos incluyen IBM 5250 , ICL 7561, Honeywell Bull VIP7800 y Hewlett-Packard 700/92.
Las consolas virtuales , también llamadas terminales virtuales, son terminales de texto emulados , 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 tipo Unix . Se utilizan principalmente para acceder e interactuar con servidores, sin utilizar un entorno de escritorio gráfico.
Se puede acceder al contenido actual de la pantalla de /dev/ttyN usando el dispositivo /dev/vcsN (donde `vcs' significa `pantalla de consola virtual'). [...] Desde un programa, normalmente es mejor usar /dev/vcsaN (`pantalla de consola virtual con atributos'): comienza con un encabezado que indica el número de filas y columnas y la ubicación del cursor. Ver vcs(4).
{{cite encyclopedia}}
: Falta o está vacío |title=
( ayuda )