# Introduction

Ce didacticiel est destiné aux utilisateurs sachant écrire un peu de code de la Simple Virtual Machine.

Dans ce didacticiel, vous allez découvrir l'entité responsable de l'exécution de tout le code au sein de la machine virtuelle.

Le temps de lecture de ce didacticiel est estimé à 10 minutes.

# Mise en place

Pour commencer, créez le canevas de l'application dans le fichier exécutable systeme.svm en utilisant ce code :

    #!/usr/bin/env svm
    DESCRIPTION
    System exploration
    END
    LOG
    DEBUG "System"
    PLUGIN "svmrun.so"
    PLUGIN "svmint.so"
    PROCESS "application"
    	CODE "main" INLINE
    		:debug BREAK "application"
    		:memory INT/i
    		0 -> &i
    	:label loop
    		:run.parallel_call $"child" i "child" SCHED=run.parallel PARAMS=COPY
    		:shift &i
    		:goto loop :when @&i IN &0*3
    		:shutdown
    	:symbol child
    		:memory STR/s
    		:int.print @&P -> &s
    		:debug BREAK @&s
    	END
    END

# Système

Le système est l'entité de la machine virtuelle qui contrôle l'exécution de tout le code de l'application.

Il contient notamment les ordonnanceurs et les processus créés dans la machine, et surveille leur terminaison.

# Evénements

Pour orchestrer l'exécution des processus avec leurs ordonnanceurs, le système met à disposition de ces derniers une file d'événements servant de canal de communication entre processus et ordonnanceurs.

Ces événements sont affichés dans le débugueur. Lancez l'application en mode débugueur, puis cliquez sur "Events" dans le menu principal. Executez l'application pas à pas :

- le processus "application" est attaché à l'ordonnanceur par défaut par le système,
- les autres processus sont attachés à l'ordonnanceur run.parallel par le processus "application",
- pour attacher ces processus, le processus "application" doit les verrouiller pour empêcher leur exécution,
- les ordonnanceurs donnent les ordres d'exécution aux processus,
- les états des processus sont remontés aux ordonnanceurs,
- lorsqu'un processus s'arrête, le système le détache automatiquement de son ordonnanceur,
- à la fin, le système arrête les ordonnanceurs.

Le système contrôle l'exécution du code dans la machine virtuelle.

Le système et les éléments qui le composent communiquent entre eux grâce à des événements.

# Conclusion

Vous venez de voir la plus haute entité d'exécution de code de la machine virtuelle.

Les événements qui sont échangés au sein du système permettent de mettre au point un nouvel ordonnanceur, ou de comprendre l'enchaînement d'actions pouvant mener à un comportement incorrect de l'application.