2010-06-15 269 views
55

Mi pregunta es:¿Cómo se comunica el software/código con el hardware?

Al pulsar el botón "Cerrar" en Windows/Linux, el equipo se apaga . ¿Cómo fue que el comando "Apagar" hizo que la computadora se apagara físicamente?

para hacer mi punto claro:

Cuando patear una pelota, no hay contacto físico entre la bola y nuestra pierna, para que la bola move.So cómo se logra la conexión física entre el software y el hardware ? ¿Cómo hace el texto sin formato de los códigos que la computadora haga lo que hace?

+4

curiosamente, tanto la interfaz de hardware físico como la interacción de bolas en su ejemplo se basan en fuerzas electromagnéticas. –

+0

Buena pregunta ... –

+0

Como mencionó Pavel, ¡considere que toda la materia está compuesta principalmente de espacio vacío! – Alan

Respuesta

38

En el nivel muy básico, el código de texto plano finalmente se traduce en 0 y 1. Estos 0 y 1 representan niveles de bajo y alto voltaje. En este punto, los niveles de voltaje controlan varios circuitos.

Piense en un ventilador con batería. La corriente suministrada por la batería alimenta un motor eléctrico, que en el interior usa electricidad para crear un campo emag que hace girar un eje que hace girar las paletas del ventilador. Este es un ejemplo de cómo el voltaje puede volverse físico.

Se puede construir un "interruptor" que dado el voltaje adecuado, con el tiempo obtener la fuente de alimentación de corriente deje de tirar de la pared.

Obviamente, es mucho más complicado que eso, pero esa es la esencia de la misma.

Para hacer las cosas más fáciles, las computadoras se componen de capas de abstracción.

En el nivel más bajo se encuentran los voltajes, los circuitos, los transistores y el silicio. La siguiente capa sobre el hardware es el sistema operativo. En lugar de volver a escribir código para cada tipo de acceso de hardware una y otra vez, el sistema operativo administra el hardware y proporciona "ganchos" para usarlo. Estos ganchos o "interfaces" permiten que su código tenga un método común para acceder a hardware dispar. Entonces, usando las interfaces proporcionadas por el sistema operativo, puede escribir su aplicación.

En cada una de estas capas, hay subcapas, por ejemplo, el hardware puede tener firmware, una especie de conjunto de instrucciones de bajo nivel que dicta cómo debe ejecutarse el hardware, almacenado en EEPROM y cargado cuando el disco está encendido arriba. Otra subcapa es la forma en que un lenguaje de nivel superior como python proporciona una biblioteca para escribir software de red sin tener que programar directamente a la API api en bruto proporcionada por el sistema operativo.

El SO maneja la mayor parte de la interacción hardware/software. Los proveedores de hardware escriben "complementos/módulos/controladores" lo que permite al sistema operativo controlar su hardware específico.

Para que escriba una aplicación de software que aprovecha estas interfaces proporcionadas por el SO al hardware. Por ejemplo, si desea apagar la computadora, Windows proporciona una interfaz para apagar la computadora. Su software llamaría a esta interfaz, y luego de la compilación/interpretación, se convertirá en un código que llamará a una interfaz para el sistema operativo. Esta interfaz, a su vez, ejecutará un conocido conjunto de instrucciones para indicarle a la computadora que se apague. Estas instrucciones son 0 y 1, bajo y alto voltaje, que acceden a una parte específica de la computadora que está diseñada para manejar el encendido/apagado/espera, y con la señal adecuada, hará exactamente eso.

1

Existen varias interfaces entre los programas de PC y el mundo real en el exterior.

Algunos se conectan a la CPU. Ejemplos de estos son puertos e interrupciones de hardware (IRQ). Esto permite enviar pequeñas cantidades de datos (por solicitud de programa de host) y funciones de llamada (controladores de interrupción) en función de desencadenantes de hardware (línea discreta que va de menor a mayor).

Hay interfaces más rápidas para transferir grandes cantidades de datos que omiten la CPU. Esto se llama DMA (acceso directo a la memoria). Estos se usan para transferir datos a discos, redes, adaptadores de pantalla, etc.

Para el puerto IO (códigos de entrada IN y OUT), el software es el iniciador. Para IRQ, el hardware habla primero para activar la respuesta del software.

Solo los usuarios de dispositivos pueden hacer todo esto. Si intenta hacerlo desde la aplicación, el sistema operativo lo romperá instantáneamente. Las aplicaciones se conectan a este mundo a través de las API presentadas por los controladores de dispositivo. Muchas de las API están estandarizadas, por lo que puede reemplazar el dispositivo real sin tener que interactuar de manera diferente (una impresora, disco, teclado, mouse, CRROM, interruptor de fuente de alimentación ATX en su ejemplo).

5

Bueno, el apagado no es en realidad físico, todos los circuitos en la computadora no están totalmente apagados hasta que desconecte físicamente la energía.

El software utiliza la interfaz APM (Advanced Power Management) en BIOS para controlar los circuitos de alimentación en la computadora.

Cuando la computadora está apagada, todavía se puede encender sin presionar físicamente un interruptor, por ejemplo, mediante una señal Wake on LAN de una tarjeta de red en la computadora.

+1

la pregunta de poder fue solo un ejemplo. Creo que OP quería saber cómo algo tan abstracto como "texto" podría usarse para controlar algo físico como la energía, o expulsar la bandeja de CD ... – Alan

+2

Sí, eso es exactamente lo que quiero saber. Lo que Alan mencionó – AbyJames

1

Comparemos las soluciones físicas y de software.

Cuando presiona el botón, en realidad está enviando una señal de 5 voltios a la fuente de alimentación. Estos 5 voltios de potencia nunca se desconectan realmente (incluso cuando piensas que tu computadora está apagada). Necesita estos 5 voltios para cuando presione el botón para encender la computadora, en ese punto se envían otros 5 voltios a la fuente de alimentación para indicarle que vuelva a encenderla.

De hecho, la presión física de los botones se convierte en una señal electrónica para que la fuente de alimentación pueda hacer algo. Cuando piensas en cosas en estos términos, de repente te das cuenta de que la computadora no necesita convertir su señal electrónica en un botón físico para apagarla, eso es algo que han agregado para beneficiar a los humanos (es decir, si pensabas que había un pequeño motor que empujaba un botón interno secreto "apagado", no existe).

Todo lo que el software necesita hacer es instruir una señal electrónica, que activa la fuente de alimentación para entrar en el modo de espera de 5 voltios.

0

En realidad, el texto sin formato de los códigos no hace que la computadora se cierre directamente. Llama a un procedimiento del sistema operativo subyacente. El sistema operativo a su vez invoca ACPI/APM en su placa principal. Esto hará que la computadora se apague.

Cómo de la pequeña 1 y 0 de interactuar con los circuitos de su hardware es un tema muy complejo que se podía leer al menos un libro a punto de entender por completo ...

3

La pierna que golpea una bola es un buen ejemplo. Es bastante similar en una máquina. La CPU está conectada a todas las otras partes del sistema, pero a diferencia del sistema nervioso, que es un cableado físico, con todos los nervios conectados a la vez, la CPU no mantiene una conexión permanente con el resto del sistema.Se conecta a la parte deseada a pedido, similar a hacer una llamada telefónica, todos los teléfonos tienen conexiones, pero solo unos pocos están conectados al mismo tiempo.

la CPU funciona mediante la ejecución de instrucciones - el programa de software. Hay códigos de instrucciones que indican a la CPU que marque alguna parte del sistema. Cada parte tiene un número y la CPU tiene instrucciones para marcar un número. Una vez que la CPU marca ese número, envía un mensaje a esa parte, el mensaje es simplemente datos, desde un bit hasta cualquier bloque de tamaño arbitrario. El hardware en esa ubicación luego actúa en el mensaje codificado.

Al hacerlo así, la CPU puede controlar cualquier pieza de hardware utilizando el mismo mecanismo. Lo único que cambia para cada dispositivo es el número que la CPU debe marcar y los datos que la CPU envía al dispositivo: detalles que se ingresan en el software que está ejecutando la CPU.

Por lo tanto, para apagar la máquina, la CPU marca el número del dispositivo de administración de energía y le envía las instrucciones para pasar a un estado de alimentación adecuado. El hardware responde y la PSU deja de enviar la energía primaria a la placa base.

Cuando se escribe softare, usted no tiene que conocer todos estos detalles usted mismo. Por lo general, están preenvasados ​​como código listo para usar, por lo que su software solo tiene que decir "apagado" y los códigos listos para esto (generalmente en el BIOS) se ejecutan para realizar el apagado, como se describe anteriormente.

0

Si está buscando cómo en general cualquier dispositivo está hecho para realizar su acción, el dispositivo viene con firmwares almacenados en ROM/CHIP del tablero de control. El tablero de control se usa para controlar el dispositivo a través de señales eléctricas.

Por encima del firmware, tendrá/proveedor de servicios de los conductores. La aplicación utilizará estos proveedores de servicios/controladores para comunicarse o instruir al dispositivo para que realice alguna acción.

Click here para saber más sobre cómo-firmwares-comunicar-a-los-dispositivos-electrónicos-para-realizar-sus-operaciones?

0

He reflexionado sobre la misma pregunta por algo tranquilo ahora y me doy cuenta de que de hecho hay una conexión entre el mundo del software (fantasía) y el hardware (real).

Piense en algo tan simple como circuitos e interruptores, luego piense en algo más abstracto como un sumador o ALU. Con el tiempo, la abstracción se construyó sobre sí misma y se vuelve compleja en la próxima rom. Luego viene el microcódigo, los códigos de operación, el lenguaje de la máquina y finalmente el ensamblaje y C. Luego vino el BIOS, el sistema operativo, los controladores y la interfaz gráfica de usuario, y esperemos que su amado botón de "Cerrar".

3

El software se almacena en el hardware como dominios magnéticos en el disco duro o disquete, o como voltajes altos y bajos en chips de computadora. Cuando escribe en un teclado, cada carácter se convierte en una serie eléctrica de 0 y 1 que luego se almacenan como voltajes bajos y altos en los chips de la computadora llamados RAM. Los voltajes alto y bajo en la memoria RAM se convierten a los dominios magnéticos en el disco duro o disco flexible para su posterior lectura en voltajes o se almacenan como voltajes bajos y altos en chips de computadora no volátiles para su posterior lectura. . Los voltajes alto y bajo representan los 0 y 1 eléctricos que generaron los caracteres del teclado.

0

Es simple: los códigos/software que escribimos son señales eléctricas representadas por 0 (OFF) y 1 (ON) en la CPU real. A partir de ese punto, piense en corrientes y motores.

4

Si crees que el software es una criatura diferente en comparación con el hardware, ninguna explicación te satisfaría. Piensa en el software como una secuencia de cargas eléctricas.Todo el código que escriba se almacenará como una secuencia de cargas eléctricas en la RAM o en el disco. Entonces NO estás escribiendo texto, sino la secuencia de cargas eléctricas. Su tarjeta de video está dibujando las cosas en el monitor en inglés para ayudarlo a comprender lo que está escribiendo. De una manera, tal vez verdaderamente, cualquier cosa que hagas en la computadora es física.

Cuestiones relacionadas