Tentando entender o TTY histórico

0

Estou tentando entender o subsistema de terminal do Linux, especialmente os drivers tty e a disciplina de linha. Aparentemente, a arquitetura deste subsistema origina-se de uma época em que os teletypewriters (ttys) eram conectados a um computador para inserir dados no computador e obter uma resposta do processo.

Eu nunca trabalhei em um verdadeiro histórico tty e acredito que quando eu entendo como tal trabalho funcionou eu sou mais capaz de entender o intrínseco de um driver tty.

Estou particularmente interessado em ecoar e edição de linha .

Assim, quando o operador no tty digitaria o texto: o texto estava ecoando no tty (imprimindo uma linha no papel)? É ecoado enquanto ele digitou as teclas / caracteres individuais ou apenas quando pressionou a nova tecla de linha / entrada.

As chaves (caracteres) que ele digita imediatamente são entregues ao computador (disciplina de linha?) ou são armazenadas em um buffer local para o tty e entregues quando a nova tecla de linha é pressionada.

Como um operador editou um texto errado (backspace, ctrl-h)? As informações de backspace seriam enviadas para o computador onde a linha seria editada de acordo ou era um recurso do tty (com o corte do computador percebendo)?

E finalmente, o que aconteceu se o operador digitasse texto enquanto o tty estivesse recebendo dados do computador?

    
por René Nyffenegger 28.02.2018 / 08:33

2 respostas

3

Os ttys originais eram como o ASR33 Teletipo Modelo 33. Eles são "burros" e quando você pressiona uma tecla envia um caractere para o modem ou computador. O computador pode então enviar de volta um caractere e ele é impresso.

Isso também fornece feedback de que a transmissão funcionou. Ele também permite que o computador envie de volta 2 ou mais caracteres quando você digita apenas 1. Por exemplo, digite enter e ele envia de volta um retorno de carro para mover o cabeçote de impressão para a margem esquerda e, em seguida, um avanço de linha para subir o papel para a próxima linha. É por isso que você ainda vê hoje a opção stty onlcr que significa traduzir nova linha para nova linha de retorno de carro .

É também a razão para a opção de ter um atraso após a impressão de retorno de carro (para permitir que a cabeça de impressão se mova para trás).

Você poderia ter editores que ecoariam backspace com backspace, X e forward-space, eliminando assim o último caractere. Se repetido, o editor poderia retroceder mais para atacar mais e, em seguida, colocar a cabeça de impressão no final novamente quando você digitasse novos caracteres.

Quando não está em um editor, a disciplina de linha mantém a linha atual digitada até o momento (portanto, stty cooked mode), após a remoção de caracteres do final da linha com backspace. Ele fornece stty rprnt para permitir que você especifique um caractere a ser digitado que reimprime a linha inteira até o momento, depois que os espaços em branco que você digitou tiveram seu efeito.

    
por 28.02.2018 / 10:10
0

Os recursos dos dispositivos tty nem sempre dependem do comportamento de alguma impressora de linha matricial que pode ou não estar conectada. Tenha em mente que os tty's também eram usados por thin clients como o VT220 do DEC, que poderia ter funcionado como um CRT anexado a um modem externo via porta paralela, como um US Modelo de Robótica 9600 bps Courier por exemplo.

Quando você tem uma quantidade tão pequena de largura de banda com a qual está lidando (embora 9600 bps tenha sido considerado relativamente "rápido" no momento) e esteja enviando um arquivo através de um modem POTS, você não quer tem que carregar o arquivo duas vezes esperando o sistema remoto ecoar tudo de volta para você. Da mesma forma, você não quer desperdiçar ciclos de CPU no sistema remoto esperando que ele escreva algo de volta para você quando você já sabe o que é.

Teria sido a mesma ideia quando você está lidando com uma conexão telnet através da Internet. Telnet não é uma conexão TCP bruta! É uma especificação real de Internetwork ( RFC854 ) com dados do protocolo IAC ("Interpret As Command") que ajudam a controlar o comportamento do tty. Programas que manipulam dispositivos tty como setserial, getty, etc. utilizam a chamada de sistema ioctl ("I / O control") e o arquivo de cabeçalho termios.h define as constantes do pré-processador para esse fim.

$ whatis ioctl tty_ioctl
ioctl (2)            - control device
tty_ioctl (4)        - ioctls for terminals and serial lines

Da mesma forma, os modems POTS utilizavam o conjunto de comandos Hayes "AT" para controlar o eco local. Programas de emulação de terminal como minicom e outros também têm definições de configuração para controlar a atividade do terminal a partir de sua perspectiva. Portanto, as configurações do tty precisam ser ajustadas para operar em conjunto com todas as outras tecnologias sendo usadas. Pelas mesmas razões, a edição de linha foi criada para economizar largura de banda e papel de impressora. Por que enviar uma linha para o outro sistema para processamento ou para uma impressora para ser colocada no papel quando você nem tem certeza de que é o que deseja?

    
por 28.02.2018 / 09:20

Tags