Cosmos : Cosmos.System.Kernel.Start()

Publié le 7 Septembre 2013

Quand le PC démarre :

  1. le BIOS fait sa sauce
  2. puis passe la main au bootloader qui fait sa sauce
  3. puis appelle un point d'entrée pour passer la main au système d'exploitation.

Cosmos commence au point d'entrée appelé par le bootloader.

Soit "Kernel_Start", ce qui, coté C# est : Cosmos.System.Kernel.Start()

Cosmos.System.Kernel est une classe abstraite car une partie de la classe est laissée a l'initiative de l'utilisateur du userkit.

Seules les fonctions Start(), Stop() et PrintDebug() sont implémentées.

BeforeRun(), Run() et AfterRun() sont a implémenter par le userkit, sachant que BeforeRun() et AfterRun() sont virtual, seul Run() est (obligatoirement) à implémenter par le userkit.

BeforeRun() et AfterRun() par défaut ne font rien.

Start() effectue (dans les grandes lignes et hors debug) les taches suivantes :

  1. Hardware.Bootstrap.Init();
  2. Global.Init();
  3. BeforeRun(); (soit rien par defaut)
  4. while (!mStopped) { Network.NetworkStack.Update(); Run(); }
  5. AfterRun(); (soit rien par défaut)

La méthode Stop() se contentant de set mStopped à true pour arrêter la boucle.

Start() hormis quelques messages de debug ne fait que ça.

On ne peut pas dire que ça soit compliqué.

Si dessous en lien le diagramme de séquence du point d'entrée du kernel (hors debug)

Rédigé par keru

Repost 0