operating-system - puede - el inicio del controlador de este dispositivo se ha bloqueado
¿Cómo se comunica el software/código con el hardware? (11)
Bueno, el cierre no es en realidad físico, todos los circuitos en la computadora no están totalmente apagados hasta que desenchufe físicamente la energía.
El software utiliza la interfaz APM (Advanced Power Management) en el 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 de Wake on LAN de una tarjeta de red en la computadora.
Mi pregunta es:
Cuando presiono el botón "Apagar" en Windows / Linux, la computadora se apaga . ¿Cómo fue que el comando "Apagar" hizo que la computadora se apagara físicamente?
Para aclarar mi punto:
Cuando pateamos una pelota, hay contacto físico entre la pelota y nuestra pierna, para que la pelota se mueva. Entonces, ¿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?
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 unidad de 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.
Entonces, en realidad, su presión física del botón se convierte en una señal electrónica para que la fuente de alimentación haga 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 apagar el poder, eso es algo que han agregado para beneficiar a los humanos (es decir, si pensabas que era un pequeño motor que empujaba un botón secreto "apagado" interno - no existe).
Entonces, 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.
El software se almacena en el hardware como dominios magnéticos en el disco duro o disquete, o como voltajes altos y bajos en los chips de la 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.
En algún momento he reflexionado sobre la misma pregunta y me he dado cuenta de que, de hecho, hay una conexión entre el mundo del software (fantasía) y el mundo del 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".
En caso de que 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á controladores / proveedor de servicios. La aplicación utilizará estos proveedores de servicios / controladores para comunicarse o instruir al dispositivo para que realice alguna acción.
Haga clic aquí para saber más sobre cómo-firmwares-communication-to-the-electronic-devices-to-perform-its-operations?
En realidad, su texto sin formato de 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.
La forma en que los pequeños 1 y 0 interactúan con los circuitos de tu hardware es un tema bastante complejo en el que puedes leer al menos un libro para entenderlo por completo ...
Es simple: los códigos / software que escribimos son señales eléctricas representadas por 0 (OFF) y 1 (ON) en la CPU real. Desde ese punto, piense en corrientes y motores.
Hay varias interfaces entre los programas de PC y el mundo real 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 utilizan para transferir datos a disco, red, adaptadores de pantalla, etc.
Para el puerto IO (códigos de operación IN y OUT), el software es el iniciador. Para IRQ, el hardware habla primero para activar la respuesta del software.
Solo los controladores 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).
La pierna pateando una pelota 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 siguiendo 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.
Entonces, para apagar la máquina, la CPU marca el número del dispositivo de administración de energía y le envía instrucciones para que entre en un estado de energía apropiado. El hardware responde y la PSU deja de enviar la energía primaria a la placa base.
Cuando escribe softare, 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.
Si bien la respuesta es bastante compleja y requiere comprender los conceptos básicos de los circuitos y sistemas eléctricos (KVL, KCL), números binarios y lógica booleana, podemos describir el proceso en un nivel alto: se compila el código (representado por palabras de texto sin formato) , ensamblados y finalmente traducidos a una combinación de cero y uno, que representan voltajes altos y bajos respectivamente.
Cuando los voltajes se aplican a materiales y circuitos, esos voltajes pueden cambiar sus propiedades físicas, como cerrar un circuito que suministra corriente a una bombilla (haciendo que se ilumine) o suministrar corriente a un motor de corriente continua que podría abrir un CD / DVD / Bluray / (?) Drive.
Ahora imagine una hipotética CPU de 1 bit, que tiene la capacidad de cerrar un circuito y entregar corriente a un zumbador, emitiendo un sonido. Esta CPU de 1 bit tiene una entrada única, que puede tener dos valores: 0 y 1.
Esta sencilla CPU tiene un lenguaje de ensamblaje muy simple: ON
y OFF
, y tenemos un lenguaje de programación elegante que ofrece algunas abstracciones más agradables: cpu.turnOn
, cpu.turnOff
.
Escribo mi programa cpu.turnOn;
compilarlo, armarlo, y está listo para ser ejecutado. Cuando ejecuto el programa en mi CPU, el zumbador se enciende.
En el mundo real, las computadoras se componen de sistemas más complejos. En lugar de una sola CPU de 1 bit, tenemos una CPU de 64 bits, con conjuntos de instrucciones complejos y una gran cantidad de dispositivos.
Para hacer que las cosas de un sistema complejo interactúen, estos sistemas están formados por capas de abstracciones.
La capa más baja es voltajes, circuitos y silicio, o lo que podrías pensar como el ''hardware físico'' real. Junto al hardware, normalmente se ubicará un "microcontrolador" o una unidad de procesamiento especializada que está diseñada para interactuar con los detalles de un hardware. Imagínese una unidad de disco óptico, su microcontrolador tiene la capacidad de expulsar el compartimento de la unidad, poner en marcha el motor, alinear el lazer y transmitir los datos del disco.
El software que ejecuta el microcontrolador se conoce como firmware. Es un sistema operativo especializado que controla las funciones de hardware y también puede incluir una API. En el ejemplo imaginario de CPU de 1 bit, el programa sería firmware, y cpu.turnOn, cpu.turnOff
sería la API.
Dado que una computadora se compone de muchos componentes de hardware (gráficos, almacenamiento, comunicaciones, E / S), las computadoras se componen de muchos firmwares especializados. Para cualquier cosa útil para hacer con ese hardware, se necesita otra capa de abstracción, por ejemplo, para tratar con los teclados de una manera universal, o para permitir que los mouse, touchpads y trackballs se comporten igual a pesar de las diferentes interacciones. Aquí es donde entra en juego el sistema operativo. El sistema operativo proporciona una API para administrar grupos de dispositivos relacionados, y proporciona ganchos para que los proveedores de hardware proporcionen la traducción entre los comandos del sistema operativo y los comandos que el microcontrolador comprenda. En Windows land, este es un driver.
La siguiente capa de abstracción, arriba de Sistemas Operativos y Controladores, son aplicaciones, lo que los usuarios usan para hacer un trabajo real (o jugar a Fortnite). Estos programas están escritos en una gran cantidad de languanges, SDK y toolkits, y es la razón por la cual existe. Esos idiomas se compilan en código ejecutable que el sistema operativo carga y administra y ejecuta por la computadora.
Poniéndolo todo junto con el comando de shutdown
: el comando intepreter usa una API de nivel de sistema operativo que administra la energía del sistema. Esa API envía una notificación al resto del sistema operativo para manejar cosas como llenar correctamente los búferes de memoria, guardar el estado de la aplicación, terminar los canales de comunicación y apagar una variedad de sistemas de hardware (o más probablemente pasar al modo de bajo consumo de energía). También utiliza un controlador de alimentación (ACPI?) Para interactuar con el subsistema de administración de energía de las computadoras. Este subsistema recibe instrucciones para el apagado, que a su vez envía una señal a la fuente de alimentación de las computadoras para interrumpir el circuito y dejar de suministrar energía a la mayoría de los componentes.
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.