# 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é singleton 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 base.svm en utilisant ce code :

    #!/usr/bin/env svm
    DESCRIPTION
    Base exploration
    END
    LOG
    DEBUG "Base"
    PROCESS "application"
    	CODE "main" INLINE
    		:debug BREAK
    	END
    END

# Base

La base de la machine virtuelle contient toutes les entités ne devant être présentes qu'une seule fois dans la machine.

## Gestionnaire d'extensions

Le gestionnaire d'extensions permet de gérer les extensions chargées dans la machine au moment du démarrage.

Modifiez le code pour ajouter une extension :

    #!/usr/bin/env svm
    DESCRIPTION
    Base exploration
    END
    LOG
    DEBUG "Base"
    PLUGIN "svmmath.so"
    PROCESS "application"
    	CODE "main" INLINE
    		:debug BREAK
    	END
    END

Puis lancez l'application :

    ./base.svm
    Boot error: Plugin math has an unsatified dependency on TYPE real.number.

Ici, c'est le gestionnaire d'extensions qui émet cette erreur au démarrage, car une extension requiert un objet qui n'est pas présent.

## Interruptions matérielles

Dans la base se trouve l'entité qui reçoit les signaux du système d'exploitation et les traduit en interruptions matérielles.

Modifiez le code :

    #!/usr/bin/env svm
    DESCRIPTION
    Base exploration
    END
    LOG
    DEBUG "Base"
    PLUGIN "svmcom.so"
    PROCESS "application"
    	CODE "main" INLINE
    		:com.prompt "wait" STR
    	END
    END

Puis lancez l'application sans valider le prompt qui apparaît. Ensuite, lancez un moniteur système qui montre les différents threads en exécution.

Parmi les threads de la machine virtuelle, un est nommé "HwInt" (pour "Hardware Interruptions"). C'est ce thread qui réalise la conversion entre signaux UNIX et interruptions matérielles.

## Débugueur

Le dernier élément de la base est le débugueur, déjà vu à maintes reprises lors de ces didacticiels.

La base de la machine contient les éléments présents une seule fois dans la machine.

Ces éléments sont partagés entre les processus, les ordonnanceurs et les extensions.

# Conclusion

Vous venez de voir l'entité singleton de la machine virtuelle.

La base forme avec le système l'ensemble de la machine virtuelle. La base n'a en général qu'une action indirecte sur l'exécution de l'application, car elle est contrôlée soit automatiquement, soit par le biais d'un élément du système.