Structure de MenuetOS MenuetOS est totalement écrit en assembleur 32 bits pour architecture i86. Il présente tous les outils nécessaires pour programmer dans ce langage, et est donc capable de s'auto-compiler. Menuet n'est pas basé sur un unix : le système de base est une structure assembleur simple. Toutefois les appels système d'unix peuvent être convertis en appels système Menuet et il existe un petit émulateur Linux (lemu.asm). Mémoire Le système de base occupe la mémoire entre 0x0 - 8 M, vient ensuite le Linear Frame Buffer de l'affichage. Le réglage par défaut de l'affichage est de 4 M. La zone entre 12 et 16 M n'est pas utilisée : certains ordinateurs modernes utilisent cette zone pour la communication entre périphériques. La position des applications est donc par défaut fixée à 16M. Bien sûr, tout ceci peut être ajusté - voir kernel.asm, set_variables. Applications Les applications de Menuet ne doivent pas obligatoirement être écrites en assembleur : la plupart des langages permettent d'écrire l'en-tête utilisée. Toutefois, l'environnement a été conçu pour faciliter la programmation assembleur 32 bits. L'interface graphique est très simple à utiliser avec ce langage. Threads L'assembleur, comparé à des langages de plus haut niveau, présente plusieurs avantages pour gérer les threads. Si toutes les variables sont confinées dans les registres, les threads peuvent êtres lancés à volonté avec le _même_ code, puisque la mémoire n'est pas utilisée et n'a donc pas à être enregistrée. Les valeurs des registres sont quant à elles sauvées dans le Task Switch Segment de MenuetOS. Tout ce qu'il reste à faire est de créer une nouvelle pile. Un Thread ne présente pas de différence avec le process principal et utilise la même portion de mémoire que le process à l'origine du thread. Ils peuvent avoir une fenêtre indépendante, etc. A la fin d'une application, tous les threads doivent être arrêtés avec l'appel système (eax = -1). villemt@itu.jyu.fi