¿Quiere decir “cómo puede controlar o acceder al hardware físico?”
Si es así, depende de la computadora. En los sistemas operativos de alto nivel como Linux, Windows y MacOS, debe acceder al hardware a través de un “controlador de dispositivo” que hace toda la interfaz fea con el hardware por usted.
Si fue al otro extremo y programó una computadora Arduino, entonces accedería al hardware físico para cosas como botones y LED y demás escribiendo datos en direcciones de memoria específicas.
- ¿Qué es todo lo que necesito saber antes de actualizar mi tarjeta gráfica?
- ¿Es bueno un portátil HP 15?
- ¿Qué ralentiza la velocidad de procesamiento de la computadora?
- ¿Debo ir con un monitor TN o un monitor IPS para la configuración de mi PC para juegos?
- ¿Cómo puedo eliminar la marca de Fevikwik (o adhesivos tan fuertes como superglues) de la pantalla de mi computadora portátil?
En la mayoría del hardware, los dispositivos se asignan a ubicaciones de memoria específicas. Tiene tres áreas de memoria “especiales” para sus tres puertos (llamados B, C y D) … se puede leer una ubicación para ver el estado de los pines físicos en el puerto, se puede escribir en otra para establecer esos pines en valores específicos: y un tercer registro establece si cada pin es una entrada a la computadora o una salida.
En C, puede escribir en una ubicación de memoria fija como esta:
#define PORT_B_ADDR 0x25 / * esta es la dirección física * /
#define PORT_B (* (unsigned char *) PORT_B_ADDR)
… así que el #define para PORT_B toma el contenido de la dirección de memoria 0x25.
Entonces, para parpadear el LED incorporado que (IIRC) está en el pin 5 del puerto B, podría escribir algo como:
mientras que (1)
{
PORT_B | = (1 << 5); // Establezca el pin 5 para emitir un '1' (+5 voltios)
dormir (1); // Deja el LED encendido por un segundo
PORT_B & = ~ (1 << 5); // Establece el pin en '0' (0 voltios).
dormir (1); // Apaga el LED por un segundo
}
… y es tan fácil en eso. Ejecute este programa y el LED se encenderá y apagará en un ciclo de dos segundos hasta que lo mate.
También sería tan fácil como eso en una computadora de escritorio, excepto que las direcciones donde ocurre la E / S están bloqueadas en el hardware, por lo que solo el núcleo (y sus controladores de dispositivo) pueden acceder a ella. Eso es necesario para la seguridad (hay formas de destruir permanentemente el hardware enviándole las señales incorrectas) y regular lo que sucede si dos o más programas desean acceder a lo mismo.