Simple Operating System - Chargement du noyau

Basic Input Output System

1. Initialisation de la machine

  1. Au démarrage de la machine, les périphériques sont dans un état indéterminé et le processeur est en mode réel.
  2. Le premier programme à exécuter est celui qui réside en mémoire non volatile Read Only Memory c'est le Basic Input Output System. Pour cela nous allons tout d'abord le rendre accessible en le mappant en mémoire, nous réservons la plage d'adresses OxC0000 - 0xFFFFF qui sera reroutée vers le BIOS en ROM.
  3. Puis nous sautons à la première instruction du BIOS à l'adresse 0xFFFF0 qui elle même plonge au coeur du BIOS afin de tester et initialiser les périphériques, cette phase se nomme Power On Self Test c'est à ce moment là que vous entendez les bips de test de la machine.

L'espace mémoire au delà des 1 Mo est inaccessible puisque le processeur est en mode réel.

Bios

2. Chargement du Boot Sector

  1. Il est temps maintenant de charger en mémoire le Boot Sector, pour cela le BIOS recherche un secteur sur lequel il va pouvoir amorcer le système. Cette recherche s'effectue dans l'ordre spécifié au niveau de la configuration du BIOS. Dans tout les cas ce secteur devra posséder le flag de fin 0XAA55 (vu dans la section MBR). Deux cas sont possibles :
    • Le périphérique de démarrage est de type amovible, le secteur correspond alors au Boot Sector.
    • Le périphérique est un disque, le secteur correspond alors au MBR.
  2. Le secteur trouvé est copié en mémoire à l'adresse 0x7C00.
  3. Encore une fois deux cas sont possibles :
    • Si le secteur est le Boot Sector on saute à sa première instruction
    • Si le secteur est le MBR, ce dernier va chercher dans sa table des partitions la première qui est marquée active afin de récupérer son Boot Sector. Ce dernier est copié en mémoire puis on saute à sa première instruction.

Bios2

Valid XHTML 1.0!