Diferença entre o arquivo de terminal e a tela do terminal

5

Eu recentemente postei uma pergunta sobre terminais e isso pareceu merecer sua própria pergunta. Se o tty que seria sinônimo de terminal , é apenas o próprio arquivo de driver de dispositivo / dispositivo, o que fornece a interface real para o terminal, e o que é Não me refiro ao gui de alguma forma, quero dizer a área real (seja em um terminal virtual ou possivelmente em um terminal psuedo) onde o texto está sendo impresso e lido. Isso é considerado uma parte do terminal? Estes são de alguma forma controlados pelo kernel? Basicamente, se alguém quisesse escrever um programa de console, como o gnome-terminal (ou mesmo com terminais virtuais), existe algum tipo de widget / interface baseado em kernel que receba entrada e saída? Basicamente é o tty (ie ie / dev / tty) apenas um arquivo ou inclui o código necessário para exibir a saída (em várias cores e pesos), e ler a partir do teclado.

Está correto: eu encontrei aqui Qual é a diferença exata entre um 'terminal', um 'shell', um 'tty' e um 'console'? que diz que tty é sinônimo de terminal. Isso é o que está me confundindo. Eu pensaria que, para emular um terminal ou fornecer um terminal, seria necessário o driver de terminal (tty) e o terminal e a parte interativa (algo como xterm). Então, por si só, o tty é simplesmente um driver para entrada e saída, e o que exibe e lê o texto de e para o tty é algo como xterm? Estaria chamando o "/ dev / tty um driver de terminal" também estar correto? Além disso, quando digo xterm quero dizer o valor da variável $ TERM.

Outro pensamento (deixe-me saber sobre isso): O arquivo tty é sinônimo da conexão entre o terminal ou o emulador de terminal do dia, e o shell. Agora eles estão todos na mesma caixa, mas os terminais originais seriam os emuladores de terminal de hoje (claramente), mas os arquivos tty ou tty agiriam como a conexão serial entre o terminal e o shell / sistema operacional. Hoje em dia parece que o emulador de terminal é um ambiente / janela para interagir com os arquivos / dev / tty ... e o shell fica do outro lado? Então escrever no arquivo / dev / tty seria como escrever ou ler a porta serial? Estou assumindo que isso não é exatamente como funciona, qualquer ajuda seria muito apreciada: - (.

    
por rubixibuc 27.12.2011 / 05:31

3 respostas

4

Originalmente, "tty" tinha duas definições: o hardware (agora o emulador) e o driver (interface através de / dev / pty * ou / dev / tty *).

O hardware / emulador foi / é responsável por:

  • Tomando um fluxo de dados e apresentando-o; isso incluía interpretar seqüências de controle como "mover o cursor para esquerda", "cursor piscando", "limpar a tela", embora essas sequências de controle fossem freqüentemente diferentes entre os fabricantes.
  • Enviando códigos de tecla para chaves digitadas pelo usuário; a maioria destes eram caracteres ASCII padrão, mas alguns terminais enviavam códigos de tecla de propriedade para chaves padrão mesmo.

O driver 'tty' era responsável por:

  • Gerenciando o armazenamento em buffer, no modo raw ou canonical; por exemplo, armazenando em buffer uma linha de caracteres até que Enter seja pressionado.
  • Gerenciando o fluxo de controle; por exemplo. ser capaz de parar / continuar com Cntl -s / Cntl-q .
  • Traduzindo códigos de códigos de propriedade para ASCII padrão, onde aplicável.
  • Interceptando certos caracteres de controle (como Cntl-c e Backspace ) e processando-os adequadamente (envie SIGINT em um Cntl-c ou sinal um EOF em Cntl-d .
  • Exibição canônica de caracteres, por exemplo, se echo estiver desativado, então não envie feedback (caractere digitado) de volta ao terminal.

Os bancos de dados terminfo e termcap gerenciavam quais caracteres de controle de terminal devem ser enviados para uma operação (como 'clear-screen'). Essas seqüências de controle foram / não são interpretadas pelo driver, mas pelo hardware / emulador.

    
por 28.12.2011 / 00:17
1

No caso do console ttys (/ dev / ttyX), o driver do kernel manipula a exibição da saída. No caso do gnome-terminal, ele é responsável por exibir a saída. O kernel apenas fornece o terminal gnome com o lado mestre do par de terminais psuedo mestre / escravo para que a saída para o terminal psuedo seja enviada para o terminal gnome para exibição, e o terminal gnome pode enviar entrada para o terminal para processos anexados a ele ler.

    
por 27.12.2011 / 19:41
1

Eu acho que esse link cobre isso. Leia a coisa toda, é incrível :-)

link - Explica como o terminal (TTY) consiste no driver do terminal, o que ajuda controla as sessões e a disciplina de linha, que pode controlar a edição de linha específica definida. Se estiver definido no modo raw (disciplina de linha), pode ser sobreposto por algo como biblioteca de linha de leitura. O emulador de terminal controla o processamento da entrada e exibição do teclado. O arquivo de dispositivo do terminal em / dev pode ser usado para manipular a disciplina de linha e o driver. É assim que eu vejo.

    
por 27.12.2011 / 09:43

Tags