Simple Operating System - Chargement du noyau

Chargement du noyau

Copie du noyau en mémoire

Le processeur est toujours en mode réel (limite mémoire de 1Mo) et le Boot Sector est présent en mémoire, nous sautons à sa première instruction :

  1. Le BS va tout d'abord se déplacer lui-même en adresse haute afin de laisser un maximum d'espace mémoire contigu en adresse basse pour y placer le noyau ultérieurement. Il se déplace donc de l'adresse 0x7C00 vers 0x9F000.
  2. Puis il réserve une pile temporaire qui est un espace mémoire lui permettant d'y stocker les arguments de ses fonctions, les variables locales ainsi que les adresses des fonctions appelantes.
  3. Le BS souhaite désormais copier le noyau en mémoire depuis notre périphérique amovible (ex: lecteur disquette). Pour réaliser cette opération le BS va lever l'interruption matérielle du lecteur disquette (0x13) et utiliser les fonctionalités du BIOS par l'intermédiaire du vecteur d'interruption. Le noyau est copié en mémoire entre l'adresse 0x1000 et 0x9F000.
Vecteur d'interruption
Les interruptions matérielles (ex: demande d'accès au lecteur disquette) sont associées à des numéros spécifiques (ex: 0x13 pour le lecteur disquette). Les adresses en mémoire qui correspondent à ces numéros font partie du vecteur d'interruption. Chacune des adresses mémoire est elle même associée à l'adresse de la routine à exécuter pour cette interruption (ex: lecture du secteur d'une disquette).

chargement noyau

Déplacement du noyau à sa déstination finale

Le noyau est maintenant chargé en mémoire (adresse basse < 1Mo), seulement son fonctionnement normal se déroule à l'adresse 2Mo (choix de l'équipe SOS).

  1. Le processeur passe en mode protégé, la barrière des 1Mo est alors franchissable.
  2. Le Boot Sector déplace le noyau à son adresse finale en 2Mo.
  3. Il réalise un changement de pile d'exécution afin de reposer sur une nouvelle pile propre à SOS. La pile est un espace mémoire permettant d'y stocker les arguments des fonctions, les variables locales ainsi que les adresses des fonctions appelantes.
  4. Enfin le Boot Sector fait un saut à l'adresse de l'insruction sos_main

chargement noyau

Valid XHTML 1.0!