Articulo de referencia

emulador de terminal

xterm , un emulador de terminal diseñado para el sistema X Window. Windows Terminal , un emulador de terminal de código abierto para Windows 10 y Windows 11. Un emulador de term...

xterm , un emulador de terminal diseñado para el sistema X Window.
Windows Terminal , un emulador de terminal de código abierto para Windows 10 y Windows 11.

Un emulador de terminal , o aplicación de terminal , es un programa informático que emula un terminal de vídeo dentro de otra arquitectura de visualización. Aunque suele ser sinónimo de terminal de línea de comandos 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 se suele denominar ventana de terminal .

Una ventana de terminal permite al usuario acceder a una terminal de texto y a todas sus aplicaciones, como las interfaces de línea de comandos (CLI) y las interfaces de usuario de texto (TUI). Estas pueden ejecutarse en la misma máquina o en una diferente mediante telnet , ssh , conexión telefónica o a través de 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 suelen admitir un conjunto de secuencias de escape para controlar el color, la posición del cursor , etc. Algunos ejemplos son la familia de estándares de secuencias de control de terminales, que incluye ECMA-48 , ANSI X3.64 e ISO/IEC 6429 .

Fondo

En los inicios de la informática, con la llegada de la computación interactiva, el modelo predominante consistía en una computadora central conectada a múltiples terminales. [ 1 ] Esta configuración, conocida como modelo centralizado o de mainframe, presentaba una potente computadora central que realizaba todas las tareas de procesamiento, mientras que las terminales servían como dispositivos de entrada/salida para que los usuarios interactuaran con el sistema. Estos sistemas se basaban inicialmente en caracteres.

Terminales orientados a caracteres

Un terminal de modo de caracteres ASCII de Televideo

Un terminal orientado a caracteres es un tipo de terminal de computadora que se comunica con su host carácter por carácter, 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, debido a su facilidad de implementación y programación. La conexión con la computadora central o el servidor de terminales se realiza mediante 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 realizan funciones como borrar una línea, borrar la pantalla o controlar la posición del cursor. En este contexto, a los terminales tontos a veces se les llama teletipos de cristal , ya que esencialmente tienen la misma funcionalidad limitada que un teletipo mecánico. Este tipo de terminal tonto todavía es compatible con los sistemas modernos tipo Unix configurando la variable de entornoTERM a dumb. Los terminales inteligentes son aquellos que también tienen la capacidad de procesar secuencias de escape, en particular las secuencias de escape VT52, VT100 o ANSI.

Emuladores

Cuando las computadoras personales se generalizaron en la década de 1980, ofrecieron la opción de ejecutar software en la computadora personal del usuario, brindando la oportunidad de reemplazar las costosas y voluminosas terminales de hardware con algo que tenía funciones adicionales. [ 3 ] Inmediatamente se puso a disposición software que podía emular las funciones de las terminales de hardware en una PC. Ejemplos de dicho software para DOS fueron Telix o Telemate, que se publicó en 1988 y podía emular una terminal DEC VT102 . [ 4 ]

Las estaciones de trabajo , que generalmente ejecutaban versiones de Unix , también se popularizaron en la década de 1980. Los sistemas Unix solían proporcionar acceso a la línea de comandos mediante terminales locales o de acceso telefónico. Las estaciones de trabajo Unix estaban 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 emulación de terminal que se comportaban como terminales locales.

Durante la década de 1990, llegaron nuevos sistemas operativos como Windows y OS/2 , proporcionando la base técnica para más emuladores de terminal 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 ]

A través del éxito de Linux en servidores, especialmente en centros de datos y servidores en la nube, [ 6 ] persiste la necesidad de acceder a computadoras remotas a través de emuladores de terminales basados ​​en caracteres.

Ejemplos de terminales emuladas

Se han desarrollado muchos emuladores de terminales para terminales de hardware físico 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 serie A T27/TD830/ET1100, ADDS ViewPoint, AT386, Siemens Nixdorf (SNI) 97801, Televideo 925 y Wyse 50/60.

Algunos emuladores de terminal, como xterm , implementan características adicionales que no están presentes en la terminal emulada. [ 7 ]

Además, se han desarrollado programas para emular diversas "terminales" de consola de sistema , como la consola de la estación de trabajo Sun y la consola Linux .

Finalmente, algunos emuladores simplemente hacen referencia a un conjunto de estándares, como los estándares para los códigos de escape ANSI .

Estos programas están disponibles en muchas plataformas, incluyendo DOS , sistemas tipo Unix como Linux y macOS , Windows y sistemas operativos integrados que se encuentran en teléfonos móviles y hardware industrial.

Detalles de implementación

Sistemas tipo Unix

En el pasado, los sistemas Unix y similares a Unix utilizaban dispositivos de puerto serie como los puertos RS-232 y proporcionaban /dev/*archivos de dispositivo para ellos. [ 8 ]

Con los emuladores de terminal, estos archivos de dispositivo son emulados por un par de dispositivos pseudoterminales . Estos, a su vez, emulan un puerto/conexión física al punto final de computación del host: hardware proporcionado por las API del sistema operativo o software como rlogin , telnet o SSH , entre otros. [ 9 ] En los sistemas Linux, por ejemplo, estos serían /dev/ptyp0(para el lado maestro) y /dev/ttyp0(para el lado esclavo) dispositivos pseudoterminales respectivamente.

También existen archivos especiales de consola virtual/dev/console como . En modo texto, escribir en el archivo muestra texto en la consola virtual y leer desde el archivo devuelve el texto que el usuario escribe en la consola virtual. Al igual que con otros 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 usar llamadas al sistema ioctl especiales de consola y terminal . Se pueden comparar dispositivos usando los patrones vcs ("pantalla de consola virtual") y vcsa ("pantalla de consola virtual con atributos") como /dev/vcs1y /dev/vcsa1. [ 10 ]

Algunos emuladores de terminal también incluyen secuencias de escape para configurar el comportamiento del terminal y facilitar una buena interoperabilidad entre el terminal y los programas que se ejecutan en él, por ejemplo, para configurar el corchete de pegado .

Las consolas virtuales se pueden configurar en el archivo /etc/inittabque lee init ; normalmente, este inicia el proceso de inicio de sesión en modo texto getty para varias consolas virtuales. El sistema X Window se puede configurar /etc/inittabmediante un gestor de pantalla X. Varias distribuciones de Linux utilizan systemd en lugar de init , lo que también permite la configuración de consolas virtuales.

Herramientas de línea de comandos

Los programas típicos del sistema Linux que se utilizan para acceder a las consolas virtuales incluyen:

  • chvtpara cambiar la consola virtual actual
  • openvtejecutar un programa en una nueva consola virtual
  • deallocvtpara cerrar una consola virtual que no se está utilizando actualmente

Eco local

Los emuladores de terminal pueden implementar una función de eco local , que puede denominarse erróneamente " half-duplex " o, incluso de forma ligeramente incorrecta, "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 ]

Modo línea por línea/Edición local

Los emuladores de terminal pueden implementar la edición local, también conocida como "modo línea por línea". A esto también se le denomina erróneamente " semidúplex ". En este modo, el emulador de terminal solo envía líneas completas de entrada al sistema host. El usuario introduce y edita una línea, pero esta 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 tecla del teclado o un botón de "enviar" en la interfaz de usuario. En ese momento, se transmite la línea completa. El modo línea por línea implica eco local, ya que de lo contrario el usuario no podría ver la línea mientras se edita y se construye. [ 11 ] [ 15 ] Sin embargo, el modo línea por línea es independiente del modo eco y no requiere eco local. Al introducir una contraseña, por ejemplo, es posible la entrada línea por línea con edición local, pero el eco local está desactivado (de lo contrario, se mostraría la contraseña). [ 16 ]↵ Enter

Las complejidades del modo línea por línea se ejemplifican con la opción de modo línea por línea 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 adecuadamente los eventos de "interrupción" y "aborto" que se producen durante la edición local de una línea. [ 17 ]

Terminales síncronas

En las terminales asíncronas, los datos pueden fluir en cualquier dirección y en cualquier momento. En las terminales síncronas, un protocolo controla quién puede enviar datos y cuándo. Las terminales basadas en IBM 3270 , utilizadas con ordenadores centrales IBM, son un ejemplo de terminales síncronas . Funcionan esencialmente en modo de "pantalla a pantalla" (también conocido como modo de bloques ). 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.

Existen emuladores de terminal que simulan el protocolo 3270 para la mayoría de los sistemas operativos, que pueden ser utilizados tanto por quienes administran sistemas como el z9 , como por quienes utilizan las aplicaciones correspondientes, como CICS .

Otros ejemplos de terminales síncronas incluyen el IBM 5250 , el ICL 7561, el Honeywell Bull VIP7800 y el 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 un ordenador personal o estación de trabajo. El término "texto" es clave, ya que las consolas virtuales no son terminales con interfaz gráfica de usuario (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 usar un entorno de escritorio gráfico.

Véase también

Notas

  1. FU Berlín, 3. Arquitectura de minicomputadoras
  2. "¿Qué es una terminal tonta? Definición y significado" . BusinessDictionary.com . Archivado del original el 13 de agosto de 2020. Consultado el 13 de marzo de 2019 .
  3. "Emulando una terminal en ordenadores personales" .
  4. "Wiki de Telemate" .
  5. "Clientes SSH para Windows" .
  6. "Potenciando Linux en el centro de datos" .
  7. Thomas E. Dickey. "XTerm - Preguntas frecuentes (FAQ)" . ¿Por qué un VT220?
  8. "Una breve historia de la emulación de terminales | Turbosoft" . www.ttwin.com . Consultado el 4 de octubre de 2021 .
  9. "Ubuntu Manpage: tty — interfaz general de terminal" . manpages.ubuntu.com . Consultado el 4 de octubre de 2021 .
  10. "Screen dumps" . The Linux keyboard and console HOWTO . The Linux Documentation Project . Consultado el 31/07/2008 . Se puede acceder al contenido actual de la pantalla de /dev/ttyN mediante el dispositivo /dev/vcsN (donde `vcs` significa `pantalla de consola virtual`). [...] Desde un programa, suele ser mejor usar /dev/vcsaN (`pantalla de consola virtual con atributos`) en su lugar; comienza con un encabezado que indica el número de filas y columnas y la ubicación del cursor. Véase vcs(4).
  11. 1 2 Daintith 2004 , pág. 171.
  12. Weik 2000 , "eco" pág. 478.
  13. Weik 2000 , "ecoplex" pág. 479.
  14. Weik 2000 , "modo ecoplex" pág. 479.
  15. Bangia 2010 , pág. 324.
  16. Stevens y Wright 1994 , pág. 413.
  17. ^ Molinero 2009 , pág. 590, 591.

Referencias

  • Bangia, Ramesh (2010). "Terminal en modo línea". Diccionario de Tecnología de la Información . Laxmi. ISBN 978-93-8029-815-3.
  • Daintith, John (2004). «eco». Oxford dictionary of computing (5.ª  ed.). Oxford University Press. ISBN 978-0-19-860877-6.
  • Miller, Philip M. (2009). TCP/IP  : La guía definitiva del protocolo . Vol.  2: Aplicaciones, acceso y seguridad de datos. Universal-Publishers. ISBN 978-1-59942-493-4.
  • Stevens, W. Richard ; Wright, Gary R. (1994). TCP/IP ilustrado . Serie de informática profesional de Addison-Wesley. Vol.  1: Los protocolos. Addison-Wesley. ISBN 978-0-201-63346-7.
  • Weik, Martin H. (2000). "Emulación de terminal". Diccionario de Ciencias de la Computación y Comunicaciones . Vol.  1. Springer. pág.  1763. doi : 10.1007/1-4020-0613-6_19359 . ISBN 978-0-7923-8425-0.
  • Definición de la ventana del terminal según el Proyecto de Información de Linux (LINFO).
  • VTTEST – Utilidad de prueba para VT100/VT220/XTerm Una utilidad de prueba de terminal creada por Thomas E. Dickey.