Cómo incluir partes físicas de una computadora en el código

¿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.

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.

Creo que estás diciendo que quieres controlar cualquier dispositivo de hardware conectado a la computadora mediante programación. Si eso es lo que quieres hacer, te sugiero que busques controladores de dispositivos en Google. Los controladores de dispositivos son piezas de software que permiten que los idiomas de nivel superior interactúen con hardware específico. Los controladores de dispositivo generalmente se escriben en un lenguaje de nivel inferior, como C. Pero, para escribir un controlador de dispositivo, necesita saber exactamente cómo funciona el hardware .

Sin embargo, no sé cómo controlar los discos duros … ¿Qué quieres decir exactamente cuando dices que quieres hacer algo con el disco duro? Si desea modificar los bits reales en el almacenamiento del disco, me temo que no es posible (al menos hasta donde sé, ¡tenga en cuenta que solo soy un estudiante de secundaria!), Porque el disco duro la placa controladora se encarga de eso.