¿Cómo se comunica Linux con el hardware alrededor del procesador?

¿Cómo se comunica Linux con el hardware alrededor del procesador?

Mi pregunta está más relacionada con el desarrollo de Unix/Linux que con la administración en sí.

Creo que está dirigido a programadores de sistemas de bajo nivel Unix/Linux y no a administradores. Me ayudará a comenzar el desarrollo del kernel y/o comprender el desarrollo del sistema Linux.

¿Qué información específica sobre el hardware necesito para comenzar a aprender cómo interactúa Linux con los periféricos y módulos de hardware? Por ejemplo, la arquitectura del bus y cómo comunicarse con los controladores.

Además, me gustaría mencionar que en la mayoría de los entornos ahora Linux se ejecuta en la máquina virtual. Entonces, lo que ve el sistema operativo debajo, eso es lo que quise decir.

Necesito algunas referencias, por favor, o cómo empezar a aprender sobre eso.

Conozco las instrucciones básicas de x86, pero mis preguntas son más sobre la memoria y los controladores de buses alrededor del procesador; El modelo de programador me refiero al entorno moderno de programación paralela.

Respuesta1

Cómo funciona eso depende mucho de la arquitectura/máquina. Linux (el kernel) crea un árbol que mapea los dispositivos disponibles y sus conexiones en el arranque (y a medida que aparecen/desaparecen los dispositivos conectados). El origen de la información depende del hardware subyacente.

Otros sistemas operativos que se ejecutan en la misma máquina tendrán su propia forma de hacerlo; si pretenden ser muy portátiles, probablemente utilicen un enfoque similar.

Jugar con, por ejemplo, un PC original (o una emulación) te da acceso a una serie defijadodispositivos, a los que se accede en algunosfijado(o casi) manera. Algunos Unices que tuve el placer de pastorear se enviaron con código objeto para el sistema; agregar/reconfigurar dispositivos significaba editar algunos archivos C, recompilar y volver a vincular el kernel. Toneladas de diversión.

Respuesta2

Consiga algo así como una placa de prototipos z80 e intente extraer cosas del puerto serie o ejecute una computadora IBM emulada con DOS y haga lo mismo usando DOS irq.

En las antiguas máquinas Z80 con visualización de texto mapeado en memoria, es fácil mostrar al menos texto.

Es posible (con facilidad o un poco más difícil o poco práctico) hacer cosas como esta usando: ensamblador, Pascal, Ada, C (por qué usarías C++ para esto), BASIC y muchos otros lenguajes, espera MUCHO DE TRABAJO !

Para un procesador bastante moderno que puede soportar una buena cantidad de memoria, eche un vistazo al MIPS2000 y sus compatriotas (gran espacio de memoria que permite fácilmente el acceso directo a 512 MB de RAM) si desea programar en C/Assembler/Ada (i Piense en Pascal.) Digo esto porque esa familia de procesadores tiene una arquitectura de memoria bastante simple.

¡Consulta las fuentes de grub!

Si está interesado en cómo cargar un programa (cargador de arranque) durante el arranque, o consulte los juegos grub-ified como Space Invaders (un clon de Space Invaders que se ejecuta sin sistema operativo).

Puedes iniciar grub-invaders en una máquina virtualver invasores de larvas

información relacionada