Actualmente estoy estudiando para un examen de informática, y me he encontrado con un concepto que me ha dejado algo perplejo.
Cuando uno escribe una tecla en el teclado, se transmite un carácter ASCII a la CPU. Al recibir este carácter, la CPU emite el mismo carácter en la pantalla. Este proceso se llama eco. En lugar de involucrar a la CPU, ¿por qué no simplemente hacemos este proceso de eco dentro de la unidad de teclado / pantalla para que la CPU sea libre de hacer otro trabajo útil?
Ahora, intuitivamente, siento que esto se debe a que no hay una unidad de teclado / pantalla definida, y la CPU es el dispositivo responsable de la comunicación entre la pantalla y el teclado, a través de la red de interconexión. Sin embargo, creo que el hecho de que se mencione una unidad de teclado / pantalla puede significar que me falta un concepto importante. ¿Es este el caso? ¿Por qué involucramos a la CPU en el proceso de eco?
Respuestas:
Dejar que la computadora vea cada carácter a medida que se escribe permite a los programadores hacer que la interfaz de usuario sea más dinámica.
Cuando una computadora seria tenía el tamaño de varios refrigeradores verticales y las computadoras operaban con entrada de usuario línea por línea, la entrada de terminal se manejaba como usted describió. Escribiste una línea de texto en un terminal que lo mostraba localmente (a menudo en papel). Solo cuando presionó la tecla ENTER o RETURN se envió el texto al mainframe o al miniordenador para que se procesara.
Pero incluso en aquel entonces, los ingenieros de la época se dieron cuenta de la ventaja de permitir que la computadora vea la entrada del usuario antes. La finalización de comandos, donde escribe las primeras letras de un comando y la computadora completa el resto, se inventó a mediados de la década de 1960. Esta característica se copió y mejoró a través de los años hasta donde se encuentra hoy, disponible en todos los shells modernos de UNIX y también en Windows.
Permitir que la CPU vea cada carácter a medida que se escribe también permite que los shells ofrezcan funciones de edición e historial de la línea de comandos mucho más allá de lo que podría proporcionar un terminal tonto. Una tecla puede permitirle retroceder a través de una lista de comandos que ha escrito anteriormente, elegir uno y luego editarlo un poco antes de presionar RETURN para ejecutarlo. El texto se puede cortar y pegar entre líneas de comando, posible porque la CPU tiene acceso a comandos anteriores mientras que el terminal no. Los nombres de archivo y los comandos se pueden completar en base a una entrada parcial, nuevamente posible porque la CPU tiene acceso a los nombres de los archivos en el sistema de archivos y el terminal no.
fuente
NO ES NECESARIO NECESITAR que la computadora vea cada carácter a medida que se escribe para que la interfaz de usuario sea más dinámica.
Los terminales ASCII viejos venían generalmente como un paquete de teclado + pantalla, o teclado + cabezal de impresión (llamado entonces a menudo un teletipo). Así que el eco local fue posible. La entrada se envió como líneas completas, y para eso estaba la tecla Intro (también se la llamó retorno de carro). Esto era conveniente cuando su terminal estaba conectado a través de líneas telefónicas lentas a una computadora distante. Todavía tengo un módem de 300 baudios que utilicé entonces, que es un poco menos de 300 bits / segundo. Y eso no fue lo más lento que usé. No querías esperar el eco.
Kyles Jones le dio algunas buenas razones para que la computadora controle el eco. Como el historial y la edición de línea de comandos. Pero incluso estas razones podrían superarse con eco local. Mi viejo terminal de pantalla ASCII (comprado en 1980 y que ya no me atrevo a conectar a una toma de corriente ya que los condensadores deben estar en un estado lamentable) tenía (todavía tiene) alrededor de 12 pantallas (una pantalla tiene 24 líneas de 80 caracteres) de historia e instalaciones de edición locales: el terminal tenía su propia CPU local ... No estoy seguro de que eso es lo que tenía en mente. Todo esto es de memoria, así que espero que esté cerca de la verdad, pero buscar el manual me llevaría algún tiempo.
Entonces, básicamente tenía una computadora con interfaz de usuario conectada a otra computadora. En realidad, siempre habrá algo de hardware para manejar el eco, por lo que su pregunta es más si es apropiado tener un hardware sofisticado para hacerlo con una CPU o con un hardware más simple (no es capaz de hacer un trabajo sofisticado). Los constructores de mi terminal pensaron que era apropiado, y lo convirtieron en un terminal sofisticado, con el protocolo de comunicación tonto con la computadora que entonces era estándar.
Primero pensé en decir que una buena razón para pasar por la CPU sería que las aplicaciones ahora usan ventanas con todo tipo de características y diferentes fuentes, y eso requiere la potencia de la computadora para obtener la flexibilidad adecuada, que una pantalla simple. El teclado no puede ofrecer.
Pero recordé a tiempo (la memoria es difícil de recordar) que esto es falso. A principios de 1980, las personas desarrollaban gráficos de mapa de bits (ese era el nombre para el tipo de pantalla que ahora está utilizando, aunque era CRT más que LCD). Parte del trabajo siguió la vista de terminal tradicional, creando terminales gráficos muy sofisticados con múltiples ventanas y fuentes, etc. Uno de ellos fue BLIT , que fue objeto de muchos experimentos, como los infames cangrejos de Cardelli .
Eso no necesariamente significa que la CPU que ejecuta la aplicación no vio los caracteres. Pero no tuvo que hacerlo. El terminal era lo suficientemente potente como para hacer un trabajo muy complejo por sí solo.
La arquitectura de computadoras ha estado probando muchas soluciones, especialmente a medida que las redes más rápidas estuvieron disponibles. Está preocupado por el terminal, pero en algunos puntos, fue el disco el problema (principalmente el precio, creo, y también la administración). Así que tuvimos durante un tiempo una estación de trabajo sin disco (es decir, computadoras personales). Incluirían CPU, pantalla, teclado y RAM, pero no disco. El espacio en disco estaba en la red, y usted acaba de solicitar espacio en los archivos de la red. Incluso el intercambio de memoria virtual se realizó a través de la red.
Entonces, la conspiración es: interfaz sofisticada (por ejemplo), el uso de ventanas, varias fuentes, teclas programables, edición de línea de comandos, sincronización entre entrada y salida, y lo que no, requiere un poder de procesamiento real. Incluso con capacidades muy débiles, se necesita algo de hardware. Entonces, esta potencia informática puede conectarse a la computadora y su CPU, o puede ser independiente de ella y conectarse de manera más o menos remota. Lo mismo puede ser cierto para otros recursos.
Pero todo es muy relativo.
Última observación El primer terminal de pantalla alfanumérico que utilicé fue un Tektronix en 1974, que venía con su teclado. La pantalla y el teclado estaban tan bien conectados que tuvimos que pagarle a alguien para que lo modificara cambiando los circuitos con un soldador para que se comportara según fuera necesario. Pero debería detener mi flujo interminable de historias.
fuente
¿Cómo podría no estar involucrada la CPU ? ¿Cómo sabría la computadora si imprimir algo en la pantalla sin que la CPU esté involucrada? ¿Cómo sabría dónde imprimir el personaje? ¿Cómo sabría qué fuente usar? ¿Cómo sabría cómo representar esa fuente?
fuente