Análisis del proceso de arranque de Linux-0.11

  
        

Cuando la PC está encendida, la CPU de arquitectura 80x86 ingresará automáticamente al modo real (el direccionamiento utiliza el mismo segmento y desplazamiento de 16 bits que el 8086, el espacio de direccionamiento máximo es de 1 MB y el segmento máximo es de 64 KB. Se pueden usar 32 bits. Instrucción. Se utiliza una CPU x86 de 32 bits para 8086 de alta velocidad, y el código se ejecuta automáticamente desde la dirección 0xF000: 0xFFF0 (esta dirección suele ser la dirección en la ROM del BIOS). Este código es una instrucción de salto lejano: jmp far 0xF000: 0xE05B . En este momento, el BIOS comienza a realizar alguna detección y configuración del sistema (POST autoprueba de encendido, rutina de interrupción, programa de configuración del sistema, etc.) y comienza a inicializar el vector de interrupción en la dirección física 0. Después de eso, primero iniciará el dispositivo. El sector (sector de arranque del disco, 512 bytes) se lee en la dirección absoluta de memoria 0x0000: 0x7C00, que es 31KB, y salta a este lugar para iniciar la ejecución. El archivo que se está leyendo se escribe en el ensamblaje 8086 (boot /bootsect .s).

bootect.s se moverá a la dirección absoluta de la memoria 0x90000 (576KB) y leerá el código de byte de 2KB (boot /setup.s) después de arrancar el dispositivo en la memoria 0x90200 La otra parte del kernel (módulo systen) se lee en la dirección de memoria 0x10000 (64KB),

setup.s El programa moverá el módulo del sistema a la posición de inicio de la memoria física. Obtenga los datos del sistema en el BIOS y colóquelos en la ubicación adecuada en la memoria del sistema. Luego, cargue el registro de la tabla de descriptores de interrupción (idtr) y el registro de la tabla de descriptores global (gdtr), abra la línea de dirección A20 y reinicie los dos controles de interrupción. Chip 8259A, estará en el hardware. El número de interrupción se restablece a 0x20 ~ 0x2f. Finalmente, se establece el registro de control de la CPU CR0 (palabra de estado de la máquina) para que ingrese al modo de protección de 32 bits y salte al programa head.s en la parte más importante del módulo del sistema para continuar la ejecución. p> head.s programa completado, ha completado oficialmente el directorio de la página de memoria y la configuración de la tabla de la página, y restableció el kernel que realmente usa la descripción de la tabla de descripción de interrupciones y el gdt de la tabla del descriptor global. También se abrió para el controlador del disquete 1 KB byte buffer.

Copyright © Conocimiento de Windows All Rights Reserved