¿Cómo funcionan juntos el hardware y el software del ordenador?

En capas.

Recuerda una vieja película de la Segunda Guerra Mundial (o incluso anterior), en la que el capitán, de pie en el puente, da una orden: "Poner rumbo a Hawai". Su primero en el mando transmite esa orden a los demás oficiales del puente pertinentes que tendrán que hacer su parte para ejecutar esa orden general.

Uno de esos oficiales del puente coge un teléfono y grita una orden a la sala de máquinas: "¡Adelante, a media potencia!" (o cualquiera que sea la nomenclatura apropiada de la Marina, lo siento; ¡nunca seré un buen novelista de historias de la Marina!).

El jefe de máquinas de abajo cuelga el teléfono, y luego se vuelve hacia sus subordinados, mirando a cada uno por turno "¡Carguen más carbón en las calderas 1 y 2! Preparen la caldera 3. Ajustar la presión del vapor. Comprueba el bla-bla-bla!".

Cada uno de esos subingenieros dirige entonces a sus subordinados para que hagan esas cosas. El tipo que recibió la orden "¡Carga más carbón en las calderas 1 y 2!" recorre la línea hasta cada una de esas calderas, comprueba el ritmo de combustión actual y da instrucciones a los lacayos para que empiecen a meter carbón con pala, hasta que lleguen a la presión de vapor X. El otro tipo coge a su equipo y empieza a avivar el motor nº 3. Y así sucesivamente.

El capitán no necesita saber que se necesitan 15 palas de carbón para conseguir un aumento del 10% de la presión de vapor en las calderas 1 y 2, pero que la caldera 3 es un modelo más nuevo y eficiente que sólo necesita 12 palas, o incluso que la caldera nº 3 estaba parada y necesita una gran patada en el trasero para ponerse en marcha junto a las nº 1 y 2. Hay capas de abstracción, protegiendo al Capitán de un nivel de detalle que es irrelevante para hacer su trabajo (a menos que algo vaya mal que necesite consideración a nivel de Comando).

Cada pequeño clic de botón o arrastre de ventana inicia una ráfaga de comandos y respuestas. Cuando arrastras una ventana de una parte de la pantalla a otra, el Sistema Operativo empieza a repintar esa ventana poco a poco mientras mantienes pulsado el botón izquierdo y mueves el ratón, a la vez que repinta los datos gráficos que había debajo de la ventana, porque está haciendo un seguimiento de lo que hay en todas las ventanas, está diciendo a la otra aplicación responsable de esa ventana subyacente "Oye, no estás cubierto por otra ventana, ahora eres visible, necesito que vuelvas a pintar tu ventana - dame esos datos gráficos y los enviaré - sólo los trozos que ahora son visibles - al hardware gráfico."

El sistema operativo emite entonces un conjunto de comandos, que se filtran en un conjunto más amplio de subcomandos a un "controlador de dispositivo" para tomar esos datos gráficos, y organizarlos de una manera que la tarjeta gráfica pueda manejar. La tarjeta gráfica toma ese comando y los datos, hace algún tipo de procesamiento en él (tal vez usted tiene algún efecto de sombra alrededor de los bordes de las ventanas para dar ese aspecto 3D), y luego mueve los datos actualizados a los circuitos que emiten datos de vídeo a su monitor.

Su ventana se mueve, y lo que estaba bajo la ventana se revela.

Hay hardware, hay controladores de dispositivos, a menudo hay una "capa de abstracción de hardware" que trata de hacer que la mayoría del hardware dentro de ciertas categorías se presente de una manera uniforme al sistema operativo, de modo que el sistema operativo puede emitir el mismo conjunto de comandos, independientemente de las diferencias entre una marca y modelo de tarjeta gráfica y otra, y está el sistema operativo que arbitra el acceso a todo el hardware, de modo que se pueden ejecutar múltiples aplicaciones en el mismo hardware y que todas se lleven bien, compartiendo esos recursos limitados.

Capas. Capas de abstracción.