Las diferencias entre Terminal y emulador de terminal

En la actualidad prácticamente cuando nos referimos a terminal solemos referirnos muchas veces a un emulador de terminal pero NO son lo mismo y vamos a ver los motivos paseando un poco por la historia.

# ¿Qué es un terminal de texto?

Un terminal es un cacharro (hardware) que puede ser electrónico o electromecánico. Básicamente estos cacharros se usaban para interactuar con un ordenador central (mainframe). La conexión con estos ordenadores era generalmente mediante cable serie (RS-232).

Podemos encontrar 2 tipos genéricos de conectores RS-232:

  • Conector tipo DB-25 (de 25 pines)
  • Conector tipo DE-9 (de 9 pines, popularmente mal denominado DB-9).

Y aquí podemos ver 2 fotos de como son estos cables y conectores:

# Los primeros terminales

Los primeros terminales que se conectaban a ordenadores centrales fueron las teleimpresoras electromecánicas (TTY). Model 33 teletype que originalmente se usaba para telegrafía podía conectarse a un ordenador central. Estos cacharros no tenían pantalla y se usaba papel para introducir ordenes y para recuperar el resultado. Imagina cuanto papel podías gastar si necesitabas ver un listado de archivos grande o el contenido de un documento de texto grande.

En esta foto se puede ver el terminal Model 33 teletype.

El uso de estos terminales ofrecía varios problemas. Por un lado la velocidad estaba limitada a la velocidad a la cual podía ser impreso el papel y por otro el gran uso de papel necesario. Llegaron pues los TTY de vidrio, es decir, los terminales con pantallas.

La mayoría de los terminales con pantalla ofrecían el resultado en verde o ámbar.

Es destacable el Datapoint 2200 (de 1970) y el Datapoint 3200.

Antes del terminal Datapoint 3200 los terminales con pantalla que se conectaban a los ordenadores centrales mediante puerto serie usaban puertas lógicas individuales sin CPU (microprocesador). Se podría decir por tanto que el Datapoint 3200 simplificaba y reducía la electrónica de los terminales ya que incorporaba un microprocesador.

Veamos un par de fotos del Datapoint 2200 que aunque no tenía un microprocesador si que contaba con un sistema operativo:

El microprocesador llegó en el Datapoint 3200 y podríamos hablar de que el datapoint 3200 e incluso el 2200 fueron los primeros ordenadores personales cuando Bill Gates, Steve Wozniak y Steve Jobs aún estaban en el instituto.

Lo interesante de este terminal era que podías trabajar con un procesador de textos, tenía unidad de cinta y podías cargar diferente tipos de configuraciones para conectarte a diferentes ordenadores centrales. Era un terminal programable.

Podríamos decir que antes de este tipo de terminales los terminales eran tontos y pasaron a ser terminales inteligentes.

El VT50, VT52, … hasta llegar al VT100 tenían cierta memoria volátil. El VT100 se convirtió en standard por ANSI.

Por tanto ha de quedar claro que cuando hablamos de terminal nos referimos a hardware, a cacharros que servían para conectarse a ordenadores centrales.

 

# Emuladores de terminal

Los emuladores de terminal son programas informáticos que simulan el funcionamiento de un terminal (hardware. Lo que hemos explicado antes).

Con la llegada de los ordenadores personales ya tenías tu propio ordenador central en tu cacharro y este tenía ya la pantalla, el teclado, … de modo que surgieron los emuladores de terminal.

El uso de un emulador de terminal permitía eliminar el viejo terminal físico así como todos los cables serie si se contaba con una red local. Esto supuso en las empresas no tener que tener terminales hardware si ya tenían ordenadores personales con emuladores de terminal.

En GNU/Linux es muy habitual acceder a un emulador de terminal para comunicarnos de forma interactiva con el ordeandor mediante comandos. El interprete de comandos más habitual es bash (no confundir bash con un terminal o emulador de terminal, es el interprete de comandos y existen muchos otros aunque este sea el más usado ya que suele venir junto con sh en la mayoría de distros).

En UNIX y GNU/Linux el emulador de terminal por defecto suele ser “Term”.

Podemos usar versiones gráficas de emuladores de terminal como por ejemplo xterm, terminator, cool-retro-term, tilix, finalterm, …

 

 

# En resumen

Terminal es hardware. Nos referimos habitualmente mal cuando llamamos terminal a un emulador de terminal. No pasa mucho ya que es normal que ocurra. No es habitual disponer de un terminal harware en casa de modo que actualmente lo normal es acceder a emuladores de terminal que nos permiten conectar con nuestra propio ordenador personal y lanzarle ordenes.

# Curiosidad para disponer de un emulador de terminal tonto

La variable de entorno TERM especifica el tipo de emulación de terminal que vamos a estar utilizando (por ejemplo xterm-256color).

Podemos verlo así:

$ echo "$TERM"

Si cambiamos el valor de $TERM por dump veremos que no podemos hacer clear y muchas otras cosas. Estaremos como en un terminal tonto.

$ TERM = "dump"
$source /home/usuario/.bashrc

9 comentarios sobre “Las diferencias entre Terminal y emulador de terminal

  1. haber si entiendo, un tty es un emulador de terminal, un emacs con un terminal tonto en su interior, es un emulador de terminal tonto, pero si en una maquina tonta (conectada a mi maquina) se ejecuta un tty, dicha maquina tonta es un terminal?

  2. Buenas. Si nos ceñimos al origen del termino nos viene que TTY o T.TY viene de teletype . A los terminales de texto (los cacharros físicos que se usaban para conectarse a ordenadores centrales y que podían o no tener pantalla) se les llamaba así. De allí por tanto viene el termino.

    Esos terminales de texto se conectaban a un ordenador (mainframe) y podías conectar varios. Mediante por ejemplo la herramienta llamada tty se puede ver a que dispositivo estás conectado en un sistema Unix/gnulinux.
    Supongo que en estos ordenadores si se tenían 3 puertos serie pues depende a cual físicamente estuvieses enchufado pues ese sería el dispositivo de cara al sistema.

    Respecto a los emuladores de terminal eso pasó a hacerse mediante software. Las funciones de esos cacharros podían simplemente codificarse en software y utilizarse desde un pc. Eso permite por ejemplo conectarnos a maquinas remotas desde el mismo pc y con varias sesiones simultaneas.

    Minicom podría servirnos para conectar por puerto serie directamente o mediante un modem. Telnet, ssh, … para conectarnos remotamente a maquinas, … de algún modo son algo más que emuladores de terminales ya que implementan cifrado algunas de ellas y mucho más.

    Es raro encontrar a alguien usando realmente un terminal hardware especifico. Entiendo por terminal por tanto los cacharros que directamente no tenían CPU. Cuando comienzan a tener CPU comienzan a ser ordenadores personales no solamente terminales (Por ejemplo el datapoint 3200) y por tanto con capacidad de programar por software acceso a diferentes maquinas con diferentes protocolos.

    Un ordenador personal por tanto puede configurarse para que prácticamente solo sirva para conectarse a otras maquinas. Lo que pasa es que eso se hace por software realmente y eso es lo que cambia el concepto entiendo. Se trataría ya de un emulador de terminal (de algún tipo).

    Respecto a lo que comentas creo que la diferencia podría ser que un terminal tonto directamente es tonto y no permite programarse y no almacena. De modo que allí no se ejecuta como tal nada.

    Para que ese terminal tonto que comentas pudiese realizar funciones independientes del host al que se conecta (como ejecutar algo) estaríamos hablando de un terminal inteligente.
    El terminal interligente tendría procesador, memoria, … y si permitiría realizar funciones independientes del equipo al que se conecta. Un PC puede comportarse como terminal pero todos sabemos que es algo más que un simple terminal y evidentemente el PC mediante software estaría emulando esos terminales de los que se ha hablado en el post.

    Creo que la diferencia la tenemos cuando el cacharro sirve para algo más que redirigir datos. Si los terminales simplemente servían de algún modo para eso no sería correcto llamar terminales a ordenadores personales que mediante software emulan el funcionamiento de esos cacharros y sirven o pueden servir para conectarse. Creo que allí es cuando cambia el concepto y pasan a ser emuladores de terminal lo que se utiliza. Del mismo modo si usamos mame podemos jugar roms de juegos de maquinas recreativas pero no tenemos la maquina física realmente y las roms que antes eran placas hardware ahora son un archivo.

    En gnu/linux se pueden encontrar posiblemente en /lib/terminfo/ un montón de archivos como: vt100 vt102 vt220 vt52 que usa term para emular diferentes tipos de terminales.

    .
    ├── a
    │   └── ansi
    ├── c
    │   ├── cons25
    │   ├── cons25-debian
    │   └── cygwin
    ├── d
    │   └── dumb
    ├── E
    │   ├── Eterm
    │   └── Eterm-color -> Eterm
    ├── h
    │   └── hurd
    ├── l
    │   └── linux
    ├── m
    │   ├── mach
    │   ├── mach-bold
    │   ├── mach-color
    │   ├── mach-gnu
    │   └── mach-gnu-color
    ├── p
    │   └── pcansi
    ├── r
    │   ├── rxvt
    │   ├── rxvt-basic
    │   ├── rxvt-m -> rxvt-basic
    │   └── rxvt-unicode
    ├── s
    │   ├── screen
    │   ├── screen-256color
    │   ├── screen-256color-bce
    │   ├── screen-bce
    │   ├── screen-s
    │   ├── screen-w
    │   └── sun
    ├── v
    │   ├── vt100
    │   ├── vt102
    │   ├── vt220
    │   └── vt52
    ├── w
    │   ├── wsvt25
    │   └── wsvt25m
    └── x
        ├── xterm
        ├── xterm-256color
        ├── xterm-color
        ├── xterm-debian -> xterm
        ├── xterm-mono
        ├── xterm-r5
        ├── xterm-r6
        ├── xterm-vt220
        └── xterm-xfree86
    

    Y bueno. Emacs es un sistema operativo entiendo ;).

    • (por los demas comentarios) entoces… un emulador de terminal fue una evolucion natural de lo anteriormente conocido como terminal “a secas”, y actualemente la distincion no tiene sentido

  3. Respecto a TTY si te refieres a /dev/tty1 /dev/tty2 … o a vc/1 vc/2 vc/3 es interesante comentarlo.

    Normalmente (aunque es modificable) las distros GNU/Linux suelen permitirnos cambiar a lo que se llaman consolas (pero que en realidad su nombre es Virtual console, abreviado vc). Esas consolas son en realidad terminales virtuales. Vamos pasando de vc/0 a vc/1 a vc/2 a vc/3 pulsando control+alt+f1 o control+alt+f2 y así hasta llegar a la última que tengamos especificada en la distro.

    control+alt+f1 nos llevará a vc/1 que estará conectado a /dev/tty1

    Veremos con el programa tty a donde estamos conectados. Si en vez de abrir directamente las consolas virtuales abrimos un emulador de terminal gráfico como por ejemplo terminator o xterm y usamos tty veremos que con este software usaremos pseudoterminales (veremos cosas como /dev/pts/0 /dev/pts/1 …

    Supongo por tanto que es aquí donde siempre añadimos esa diferenciación y llamamos consola a las consolas virtuales o terminales mientras que a lo que abrimos con un emulador de terminal grafico lo solemos llamar coloquialmente emulador de terminal.

    Aunque la verdad es que es todo un lio y al final ocurre como con los caballos de un coche. Decimos que tiene nosecuantos caballos y aunque originalmente venga el termino de cuantos caballos tiran de un carro por el contexto histórico sabes que no se refiere a caballos de verdad.

    Digamos que no pasaría mucho por llamar a los emuladores de terminal terminales y a las consolas virtuales consolas o llamar a todo consolas o shell o como nos de la real gana. Al final sabemos que nos referimos de algún modo a una zona en la que esta esperando un interprete de comandos a que le metamos cosas y nos saque cosas.

    Puede quedar muy de gilipollas que si alguien dice terminal tu le digas: “es incorrecto amigo, te refieres a un emulador de terminal.”

    Lo mismo la otra persona te dice que cuando habla de caballos de un motor de coche tampoco se refiere a los animales. De modo que en la practica no encontrarás a demasiada gente dando por el culo diciendo que se ha de decir emulador de terminal y bla bla bla.

  4. Bueno, un símil que se me ocurre, y que se utiliza en alguna ocasión, se les llama terminal a los móviles, supongo porque como con los terminales que mencionas, se usan para conectarse a un nodo central que distribuye la comunicación. Podría ser una referencia parecida, ¿no?

  5. Por cierto, Fanta, hace un tiempo que no te encuentro en xmpp, ¿cambiaste de dirección o no lo estás usando?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *