¿Cómo se convierte el código en una salida de hardware? es decir, ¿cómo la pulsación de teclas o la ejecución del programa provocan una salida física en el hardware?

Incluyendo los comentarios sobre la pregunta, en otras palabras, desea un volcado de información de estilo “Acercar” CSI.


No hay CSI “Zoom In”.

En realidad, no hay nada como los programas criminales de televisión, donde pueden acercarse desde un satélite a una placa de matrícula. Simplemente no hay tantos píxeles reales en la imagen para permitirles hacer eso.

Es posible que podamos capturar suficientes imágenes de resolución en el futuro (el problema principal son los límites actuales de la tecnología de almacenamiento, en realidad) para permitir esa variedad de cosas, pero no hoy.

Esos programas demuestran tecnología “mágica”, también conocidas como las tres leyes de Clarke:

  1. Cuando un científico distinguido pero anciano afirma que algo es posible, es casi seguro que tiene razón. Cuando dice que algo es imposible, probablemente esté equivocado.
  2. La única forma de descubrir los límites de lo posible es aventurarse un poco más allá de ellos hacia lo imposible.
  3. Cualquier tecnología suficientemente avanzada es indistinguible de la magia.

Del mismo modo, esto no existe para el material de referencia, como el del tema que está preguntando, excepto en ciertas implementaciones experimentales (parte del contenido del Museo de Google y varias bases de datos médicas “humanas visibles” tienen información suficiente para hacerlo; son literalmente terabytes de datos de imagen).

En general, no hay una cantidad sustancial de material de referencia que comience desde lo extremadamente general, y luego le permite elegir una parte de la generalidad, y luego “Acercar”, y luego repetir el proceso a cualquier nivel de detalle.

Es probable que lo más cercano que obtendrá para su pregunta en las computadoras:

Cómo funcionan las computadoras: la evolución de la tecnología, 10ª edición: Ron White, Timothy Edward Downs: 9780789749840: Amazon.com: Libros


Creo que personalmente podría guiarlo a través de todo, desde la extracción de materiales hasta el ejemplo específico que solicite, con el nivel de detalle que necesitaría para recrear la tecnología desde cero, pero probablemente tomará varias décadas.

Culpo este tipo de preguntas a nuestra cultura actual de gratificación inmediata.

En el nivel más simple, los bits en las computadoras digitales se almacenan como voltajes eléctricos en los transistores: un voltaje bajo es cero, un voltaje alto es uno. Todo lo que tiene que hacer para hacer un cambio físico es pasar un cable desde el transistor interno a un pin de salida, por lo que ahora tiene un cambio de voltaje que puede encender una luz o hacer funcionar una válvula solenoide para que salga la tinta de una boquilla.

Algunas computadoras usan mapeo de memoria: ciertas direcciones en la memoria están conectadas a ciertos pines de salida, por lo que para que un cambio de salida su programa solo necesite escribir un “1” en la dirección correcta. Creo que ese es el caso en el chip ARM utilizado en la Raspberry Pi. Sin embargo, en las computadoras modernas generalmente hay un sistema operativo entre los programas de usuario y el hardware; Los programas de usuario no tienen el privilegio de abordar el hardware directamente, por lo que deben pasar una solicitud a un controlador de dispositivo mediante una llamada al sistema. Eso también hace la vida mucho más simple; no necesita saber cómo manejar cientos de impresoras diferentes en cientos de diferentes tipos de procesadores, simplemente haga clic en “imprimir” y el sistema operativo se ocupará de ello.

¡No estoy seguro de cómo funciona la impresora internamente, pero puedo darle una analogía similar!

Una de las máquinas que se usa fácilmente para crear un cambio físico es Motor, por ejemplo, Servo Motor. Un motor convierte la energía eléctrica en energía mecánica, por ejemplo, los motores se utilizan en robots para crear movimiento. Entonces solo necesitamos controlar esta energía eléctrica para controlar nuestros movimientos mecánicos. Aquí aparece un software, es decir, mediante un programa, podemos controlar la generación de energía eléctrica que a su vez crea movimiento a través de un motor.

Ahora, cómo se hace eso es un tema poco extenso, pero para resumir la computadora, tenga algo llamado Tarjeta de E / S que puede generar voltajes continuos o discretos. Se puede utilizar un voltaje continuo como + -10 voltios para conducir un motor, mientras que se puede utilizar un voltaje discreto de + -5 voltios (ENCENDIDO o APAGADO) para operar un interruptor.

Entonces, un programa de computadora controla la tarjeta de E / S, controlando así la generación de energía eléctrica. Podemos decir que un programa puede controlar el movimiento mecánico.

No hay necesidad de convertir: el código ya es físico, ya que cada instrucción de su programa corresponde a un estado cargado (1) o no cargado (0) de algunos condensadores en su RAM. A partir de ahí, cuando la CPU lo esté leyendo, los voltajes se amplificarán y se enviarán a través de un cable, para hacer que varios Flip-flop (electrónica) asuman un cierto estado; esto es de lo que están hechos los registros de la CPU y el caché. A su vez, provocarán que la vasta red de miles de millones de transistores que es su CPU comience a cerrarse y abrirse, en un patrón que se llama “ejecución de una instrucción”: el resultado final es a menudo otros flip-flops causados ​​para asumir ciertos estados (resultado registros), pero también pueden cerrar o abrir transistores que conducen al exterior, donde nuevamente después de una amplificación saldrán voltajes útiles. Estos voltajes pueden amplificarse nuevamente (usando transistores o relés) a voltajes aún más altos que pueden impulsar motores y algún dispositivo piezoeléctrico para dispersar la tinta en su impresora.

TL; DR: Ve a buscar un Arduino, si te interesan esas cosas te divertirás mucho con ellas 🙂

PD También revise la historia de las computadoras, desde el telar Jacquard en adelante: todo esto era mucho más obvio cuando las computadoras eran más simples, y las computadoras de hoy en su mayoría solo están acumulando ideas sobre ese telar.

PPS Espero que también esté claro que estoy simplificando enormemente lo que está sucediendo arriba: en realidad, lo más probable es que haya otra computadora en su impresora, y su computadora solo está enviando un programa (que genera) para ejecutarse allí (en un lenguaje llamado “PostScript”). Agregue el hecho de que la comunicación se realiza a través de USB o Ethernet, y no de un puerto paralelo, y necesita media biblioteca de libros para comprender lo que realmente está sucediendo. Es posible que desee considerar un título en Ciencias de la Computación o Ingeniería Eléctrica en algún momento (e incluso eso no será más que una introducción, pero al menos será una introducción rigurosa).

El código es físico, este mismo texto, mientras lo escribo, va a mi ram y luego a la CPU y así sucesivamente. Está representado por la electricidad (electrones) en nuestras computadoras. Todo es físico, nada es simplemente allí. Esta electricidad se convierte y se mueve a través de circuitos que contienen diferentes interruptores, como los interruptores AND y ANDOR, que hacen cosas diferentes según la entrada de electrones originales. Las pulsaciones del teclado o presionar una tecla son solo un circuito que se ESTÁ ACTIVANDO.

TL; DR. Lo que piensas como 1 y 0 son en realidad niveles de voltaje. Al monitorear estos niveles de voltaje, un dispositivo de hardware sabe qué hacer.

Usted es consciente de que 1 y 0 están representados por voltajes dentro de una computadora (0 es generalmente 5 V, 1 es generalmente 0 V, lo contrario de lo que podría esperar. Hay una buena razón para esto).

Entonces, cuando escribe un “0” en una dirección, en realidad está elevando el voltaje en algún pin de 0V a 5V. Un dispositivo de E / S de hardware asignado a esa memoria puede tomar esa señal y amplificarla como cualquier otra señal eléctrica.

Entonces, si está utilizando una impresora de inyección de tinta, que generalmente se basa en vaporizar la tinta, el 5V se amplifica a un nivel en el que puede vaporizar la tinta mediante el uso de un pequeño calentador en el cabezal de impresión. Si está accediendo a una impresora matricial, la señal podría usarse para controlar un pequeño motor lineal.