next up previous contents
suivant: L'allocation du processeur monter: Principes de base précédent: Principes   Table des matières

Phase de démarrage: le boot

Par construction, au démarrage, le système se trouve en mode superviseur. Ensuite une fonction correspondant au "boot" du système lance l'initialisation du système. Cette phase se décompose comme suit:
  1. Masquage des interruptions,
  2. Initialisation du SP a une pile de boot5,
  3. Initialisation du timer ou pas selon le point d'entrée,
  4. Initialisation de la table des vecteurs d'interruptiond
  5. Ensuite, on appelle une fonction6 qui, elle, initialise les structures internes du noyau:

On procède ensuite à la création d'un premier processus appelé sentinelle, affecté de la plus faible priorité, qui sera par conséquent le dernier processus exécuté. Son rôle se limite ici à arrêter le système en rendant la main au moniteur, mais dans un système plus élaboré (incluant par exemple une gestion de périphériques ou un système de fichier) il faudrait libérer proprement les ressources. Il est à noter que, lors de la création d'un processus quel qu'il soit, nous empilons 15 valeurs "bidon" qui vont jouer le rôle de contexte et qui seront modifiées par la suite.

Une fois sentinelle lancé, nous faisons appel au processus main avec une priorité supérieure à celle du processus sentinelle. Le processus main constitue le point d'entrée pour l'utilisateur : c'est, pour lui, le point de départ de l'exécution du programme qu'il a écrit7.

Les deux processus sentinelle et main sont créés en mode superviseur avec la primitive système de création des processus, .opCreerProcessus ,appelée directement depuis la procédure d'initialisation .


next up previous contents
suivant: L'allocation du processeur monter: Principes de base précédent: Principes   Table des matières
Alexandre DAGAN
2000-07-07