Wprowadzono pierwszą wersję systemu operacyjnego QSOE, zaprojektowanego w stylu QNX i dostarczanego z dwoma wymiennymi mikrojądrami „Skimmer” i „seL4”. Na poziomie jądra działa tylko system przydziału zasobów, mechanizm synchronicznej wymiany wiadomości (QNX IPC) oraz minimalistyczne jądro, podczas gdy wszystkie pozostałe komponenty zostały zrealizowane w przestrzeni użytkownika. System obsługuje pracę na 64-bitowych procesorach z architekturą RISC-V. OS został przetestowany na płycie SiFive HiFive Unmatched oraz w QEMU. Kod projektu jest napisany w języku C i jest dystrybuowany na licencji Apache 2.0.
Do wyboru dostępne są opcje: QSOE/N z własnym mikrojądrem Skimmer oraz QSOE/L oparty na mikrojądrze seL4, które ma formalną weryfikację niezawodności dla architektury RISC-V. Ponadto rozwijany jest bootloader mr-bml oparty na GRUB 2.13, standardowa biblioteka libc oraz zestaw programów quser. W skład zestawu programów wchodzi powłoka komend qsh oparta na mksh, system inicjalizacji oraz zestaw typowych narzędzi unixowych, takich jak ls, cat, ps, lspci i login.
Mikrojądro Skimmer wykorzystuje pożyczoną z projektu DragonFly BSD implementację lekkich wątków w jądrze (LWKT, Light Weight Kernel Threads) z przypisanymi do CPU kolejkami roboczymi oraz prymitywami przesyłania komunikatów msgport. QSOE umożliwia użycie różnych jąder z jedną przestrzenią użytkownika oraz zestawem sterowników, które nie zmieniają się przy zmianie jądra. W powiązaniu z jądrami zbierane są tylko menedżer zadań (taskman) oraz biblioteka libc, pełniąca rolę powłoki nad interfejsami API podobnymi do QNX, dostarczanymi przez mikrojądra.
┌──────────────────────────────────────────────────────────┐
│ qsh + sterowniki + narzędzia (dynamicznie powiązane) │
├──────────────────────────────────────────────────────────┤
│ libc.so (wspólne ciało; szew specyficzny dla LQ w lq/libc/) │
│ rtld (pochodna FreeBSD; BSD-2-Clause) │
├──────────────────────────────────────────────────────────┤
│ taskman menedżer procesów / pamięci / ścieżek │
│ libtaskman przenośne ciało menedżera zadań (ścieżka / uprawnienie / │
│ syscfg / synchronizacja / przenoszenie / cpio / elf) │
├──────────────────────────────────────────────────────────┤
│ mikrojądro seL4 (RISC-V Sv39, formalnie zweryfikowane) │
│ elfloader (ładujący jądro + menedżera zadań) │
└──────────────────────────────────────────────────────────┘
Pierwsza wersja QSOE wyróżnia się osiągnięciem możliwości uruchamiania i logowania się do powłoki na rzeczywistej płytce SiFive Unmatched (FU740) z dyskiem NVMe. Udane uruchomienie zostało zrealizowane dla konfiguracji z oboma rdzeniami (QSOE/L i QSOE/N).
Źródło: opennet.ru
