Por que a CPU está envolvida durante o eco do teclado?

9

Atualmente, estou estudando para um exame de ciência da computação e me deparei com um conceito que me surpreendeu um pouco.

Quando alguém digita uma tecla no teclado, um caractere ASCII é transmitido para a CPU. Após a recepção desse caractere, a CPU envia o mesmo caractere para a tela. Esse processo é chamado de eco. Em vez de envolver a CPU, por que simplesmente não fazemos esse processo de eco na unidade de teclado / tela para que a CPU fique livre para realizar outro trabalho útil?

Agora, intuitivamente, sinto que isso ocorre porque não há uma unidade de teclado / tela definida, e a CPU é o dispositivo responsável pela comunicação entre a tela e o teclado, através da rede de interconexão. No entanto, sinto que o fato de uma unidade de teclado / tela ser mencionada pode significar que estou perdendo um conceito importante. É esse o caso? Por que envolvemos a CPU no processo de eco?

MMMMMCK
fonte
Como a entrada do teclado e a saída de texto funcionam? pode ser do seu interesse. Ele fornece uma visão geral de alto nível do processamento que ocorre atualmente em um sistema operacional típico para computadores no estilo PC.
Gilles 'SO- stop be evil'
Se eu pudesse votar para fechar, eu o faria. Isso não é ciência da computação. É mais adequado para o StackOverflow ou outro local focado em hardware de computador e programação de baixo nível.
Route de milhas

Respostas:

6

Deixar o computador ver cada caractere conforme é digitado permite que os programadores tornem a interface do usuário mais dinâmica.

Quando um computador sério tinha o tamanho de vários refrigeradores verticais e computadores operados na entrada do usuário, uma linha de cada vez, a entrada do terminal era tratada como você descreveu. Você digitou uma linha de texto em um terminal que a exibia localmente (geralmente no papel). Somente quando você pressionou a tecla ENTER ou RETURN, o texto foi enviado para o mainframe ou minicomputador para ser processado.

Mas mesmo naquela época, a vantagem de deixar o computador ver a entrada do usuário mais cedo era percebida pelos engenheiros da época. A conclusão do comando, onde você digita as primeiras letras de um comando e o computador preenche o restante, foi inventada em meados dos anos 60. Esse recurso foi copiado e aprimorado ao longo dos anos até hoje, disponível em todos os shells UNIX modernos e também no Windows.

Permitir que a CPU veja cada caractere conforme é digitado também permite que os shells ofereçam recursos de edição e histórico da linha de comando muito além do que um terminal idiota poderia oferecer. Uma tecla pode permitir que você volte pela lista de comandos digitados anteriormente, escolha um e edite-o um pouco antes de pressionar RETURN para executá-lo. O texto pode ser cortado e colado entre linhas de comando, possível porque a CPU tem acesso aos comandos anteriores enquanto o terminal não. Os nomes de arquivos e os comandos podem ser concluídos com base na entrada parcial, novamente possível porque a CPU tem acesso aos nomes dos arquivos no sistema de arquivos e o terminal não.

Kyle Jones
fonte
Esta foi uma excelente resposta, obrigado!
MMMMMCK
4

Permitir que o computador veja cada caractere conforme é digitado NÃO É NECESSARIAMENTE NECESSÁRIO para tornar a interface do usuário mais dinâmica.

Os terminais ASCII antigos geralmente vinham como um pacote de teclado + tela ou teclado + cabeçote de impressão (chamado de teletipo). Era possível eco local. A entrada foi enviada como linhas inteiras, e é para isso que serve a tecla Enter (também chamada de retorno de carro). Isso foi conveniente quando o seu terminal foi conectado através de linhas telefônicas lentas a um computador distante. Ainda tenho um modem de 300 bauds que usei na época, que é um pouco menos que 300 bits / segundo. E isso não foi o mais lento que eu usei. Você não queria esperar pelo eco.

Kyles Jones deu a você algumas boas razões para controlar o eco pelo computador. Como histórico e edição de linha de comando. Mas mesmo essas razões podem ser superadas com eco local. Meu antigo terminal de tela ascii (comprado em 1980 e que não me atrevo a conectar a uma tomada, pois os capacitores devem estar em um estado lastimável) tinha (ainda tem) cerca de 12 telas (uma tela com 24 linhas de 80 caracteres) e recursos de edição local: o terminal tinha sua própria CPU local ... Não tenho certeza de que era isso que você tinha em mente. Isso tudo é da memória, por isso espero que seja quase verdade, mas a busca pelo manual levaria algum tempo.

Então, basicamente, eu tinha um computador com interface de usuário conectado a outro computador. Na verdade, sempre haverá algum hardware para lidar com o eco; portanto, sua pergunta é mais se é apropriado ter hardware sofisticado para fazer isso com uma CPU ou com hardware mais simples (incapaz de executar trabalhos sofisticados). Os construtores do meu terminal pensaram que era apropriado e o tornaram um terminal sofisticado, com o protocolo de comunicação idiota com o computador que era então padrão.

Primeiro pensei em dizer que uma boa razão para analisar a CPU seria que os aplicativos agora usem janelas com todos os tipos de recursos e fontes diferentes, e isso requer a capacidade do computador para obter a flexibilidade apropriada, que uma simples tela- teclado não pode oferecer.

Mas lembrei a tempo (é difícil lembrar a memória) que isso é falso. No início de 1980, as pessoas estavam desenvolvendo gráficos de bitmap (esse era o nome para o tipo de tela que você está usando agora, apesar de ser um CRT classificado como LCD). Alguns dos trabalhos seguiram a visão tradicional do terminal, criando terminais gráficos muito sofisticados com várias janelas e fontes, etc. Um deles era o BLIT , que foi objeto de muitas experiências, como os infames caranguejos de Cardelli .

Isso não significa necessariamente que a CPU executando o aplicativo não tenha visto os caracteres. Mas não precisava. O terminal era poderoso o suficiente para fazer um trabalho muito complexo por conta própria.

A arquitetura de computadores vem testando muitas soluções, especialmente quando redes mais rápidas se tornam disponíveis. Você está preocupado com o terminal, mas em alguns momentos, foi o disco que estava com problema (principalmente preço, acho, e também gerenciamento). Por isso, tivemos durante algum tempo uma estação de trabalho sem disco (ou seja, computadores pessoais). Eles incluem CPU, tela, teclado e RAM, mas nenhum disco. O espaço em disco estava na rede e você acabou de solicitar espaço no arquivo da rede. Até a troca de memória virtual foi feita através da rede.

Portanto, a questão é: interface sofisticada (por exemplo), usando janelas, várias fontes, teclas programáveis, edição por linha de comando, sincronização entre entrada e saída e o que não é necessário, requer um poder de processamento real. Mesmo com recursos muito fracos, é necessário algum hardware. Então, esse poder de computação pode ser conectado ao computador e à sua CPU, ou pode ser independente dele e conectado mais ou menos remotamente. O mesmo pode acontecer com outros recursos.

Mas tudo é muito relativo.

Última observação. O primeiro terminal alfanumérico de tela que eu já usei foi um Tektronix em 1974, que acompanha o teclado. A tela e o teclado estavam tão firmemente conectados que tivemos que pagar alguém para modificá-lo, trocando o circuito com um ferro de soldar para que ele se comportasse conforme necessário. Mas eu deveria parar meu fluxo interminável de histórias.

babou
fonte
O que era velho é novo novamente. Estações de trabalho sem disco estão de volta!
Dfeuer
-1

Como a CPU não pode estar envolvida? Como o computador saberia se imprimia alguma coisa na tela sem a CPU estar envolvida? Como saberia onde imprimir o personagem? Como saberia qual fonte usar? Como ele saberia como renderizar essa fonte?

David Richerby
fonte
Este é o meu pensamento também. Infelizmente, fui "presenteado" com um professor que é um grande fã de perguntas obscuras, então achei que jogar pelo seguro não era uma má idéia.
MMMMMCK
4
Hmmpf, crianças hoje em dia. Os teletipos já foram uma coisa. Eles tinham uma fonte na ROM (na RAM talvez para alguns modelos avançados). Eles armazenaram e imprimiram uma linha e a enviaram ao computador. Depois vieram os terminais com uma tela; estes manteve uma memória da posição de caráter atual e conseguia entender comandos do usuário ou CPU para mover o cursor, definir atributos de texto, etc.
Gilles 'SO parada sendo mal'