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?
Respostas:
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.
fonte
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.
fonte
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?
fonte