La première version du système d'exploitation QSOE a été lancée, conçue dans le style de QNX et fournie avec deux micro-noyaux interchangeables, « Skimmer » et « seL4 ». Au niveau du noyau, seules la gestion des ressources, le mécanisme de communication synchrone (QNX IPC) et un noyau minimaliste sont exécutés, tandis que tous les autres composants sont réalisés dans l'espace utilisateur. Il prend en charge les CPU 64 bits avec l'architecture RISC-V. Le système d'exploitation a été testé sur la carte SiFive HiFive Unmatched et dans QEMU. Le code du projet est écrit en C et est distribué sous la licence Apache 2.0.
Deux options sont proposées : QSOE/N avec le micro-noyau Skimmer et QSOE/L basé sur le micro-noyau seL4, qui a une vérification formelle de fiabilité pour l'architecture RISC-V. De plus, un chargeur mr-bml basé sur GRUB 2.13, une bibliothèque standard libc et un ensemble de programmes quuser sont en développement. L'ensemble de programmes comprend un interpréteur de commandes qsh basé sur mksh, un système d'initialisation et un ensemble d'outils Unix standard tels que ls, cat, ps, lspci et login.
Le micro-noyau Skimmer utilise une implémentation de threads légers dans le noyau (LWKT, Light Weight Kernel Threads) empruntée au projet DragonFly BSD, avec des files d'attente de travail liées aux CPU et des primitives de transmission de messages msgport. QSOE permet d'utiliser différents noyaux avec un seul environnement utilisateur et un ensemble de pilotes, qui ne change pas lors du passage d'un noyau à l'autre. En liaison avec les noyaux, seuls le gestionnaire de tâches (taskman) et la bibliothèque libc, qui joue le rôle de lien avec les API de type QNX fournies par les micro-noyaux, sont compilés.
┌──────────────────────────────────────────────────────────┐
│ qsh + pilotes + utilitaires (liés dynamiquement) │
├──────────────────────────────────────────────────────────┤
│ libc.so (corps partagé ; couture spécifique à LQ dans lq/libc/) │
│ rtld (dérivé de FreeBSD ; BSD-2-Clause) │
├──────────────────────────────────────────────────────────┤
│ taskman gestion des processus / de la mémoire / des chemins │
│ libtaskman corps portable de taskman (chemin / créd / │
│ syscfg / sync / reloc / cpio / elf) │
├──────────────────────────────────────────────────────────┤
│ micro-noyau seL4 (RISC-V Sv39, vérifié formellement) │
│ elfloader (charge le noyau + taskman) │
└──────────────────────────────────────────────────────────┘
La première version de QSOE se distingue par la possibilité de démarrer et d'accéder à un shell sur la carte réelle SiFive Unmatched (FU740) avec un stockage NVMe. Le démarrage réussi a été réalisé pour des configurations avec les deux cœurs (QSOE/L et QSOE/N).
Source : opennet.ru
