Space tags: OS  operating system 

Le mini système d'exploitation Logram

Logram est un projet de mini système d'exploitation lancé en avril 2008. Logram se veut être le plus recherché possible. Une importance capitale est accordée au fonctionnement fluide et sans bugs, ainsi qu'à la lisibilité du code.

Logram n'est basé sur rien. Il n'est pas parti d'un noyau Linux, ni de tout autre noyau. Tout a été refait à partir du bootloader, jusqu'aux applications.

Architecture du noyau

Le noyau Logram est un micro-noyau enrichis. Il n'est même pas un micro-noyau, mais encore plus petit (style exo-noyau) : tout le code tourne en espace utilisateur, et le seul code en mode noyau est la gestion de la pagination, et les pilotes ayant besoin d'accéder au matériel. Le reste est en espace utilisateur.

Ce choit a été fait pour préserver au mieux la vitesse d'exécution. Ainsi, tout se déroule en mode utilisateur, comme dans un programme normal. Il n'y a donc pas de changement de niveau de privilège, ce qui réduit de manière drastique les pertes de performances, et les complications de programmation.

Prenons un exemple : le noyau Linux. Pour chaque opération demandée au noyau Linux, un appel système doit être fait. Ce qui veut dire que même pour allouer de la mémoire, ou pire, obtenir la version du noyau ou la liste des processus lancés, un appel système doit être fait.

Logram, de par son architecture orientée mode utilisateur, évite tout ça. Les seuls appels systèmes dans Logram se produisent quand il faut accéder au matériel (IRQ, ou interfaçace avec un périphérique), ou quand une exeption #PF (swapping) se produit.

Architecture des applications

Une application sous Logram est un fichier qui peut être chargé en mémoire et lancé. Les application peuvent charger des extension, dont l'aventage est d'êtres partagées par toutes les applications. Ainsi, si 3 applications ont besoin d'un accès réseau, l'extension s'occupant du réseau ne doit être chargée qu'une seule fois.

Les extensions sont chargées dynamiquement par les application, quand elles en ont besoin. Bien sur, le plus simple est de tout importer au lancement de l'application, mais si on ne lance l'application que pour quelques minutes, on aura chargé les extensions pour rien.

Le mieux est donc, si le développeur en a le courrage, de ne charger les extensions qu'au dernier moment. Le seul problème avec cette méthode, c'est qu'il peut y avoir un temps de réaction entre la tâche effectuée par l'utilisateur, et la réponse de l'application. Pour cela, un système de prefetching est possible : au démarrage de l'application, on ouvre simplement les extensions sans rien importer. Elles sont donc présentes en mémoire, et prêtes a êtres utilisées.

Pour en savoir plus

Logram n'est pas qu'un mini système d'exploitation. C'est aussi une communauté de passionnés par la programmation. Le projet Logram dispose d'un site web à cette adresse : http://www.logram-project.org .