Die erste Ausgabe von QSOE, einem Betriebssystem im QNX-Stil mit zwei austauschbaren Mikro-Kernen.

Die erste Version des Betriebssystems QSOE wurde vorgestellt, das im Stil von QNX entworfen wurde und mit zwei austauschbaren Mikro-Kernen "Skimmer" und "seL4" geliefert wird. Auf der Kernel-Ebene sind nur das Ressourcenzuteilungssystem, der Mechanismus für synchrones Messaging (QNX IPC) und ein minimalistischer Kernel aktiv, während alle anderen Komponenten im Benutzerspeicher realisiert sind. Es wird die Arbeit auf 64-Bit-CPUs mit RISC-V-Architektur unterstützt. Das OS wurde auf dem SiFive HiFive Unmatched-Board und in QEMU getestet. Der Projektcode ist in C geschrieben und unter der Apache 2.0-Lizenz verfügbar.

Es stehen folgende Optionen zur Auswahl: QSOE/N mit dem eigenen Mikro-Kernel Skimmer und QSOE/L auf Basis des Mikro-Kernels seL4, der eine formale Zertifizierung der Zuverlässigkeit für die RISC-V-Architektur aufweist. Darüber hinaus wird der Bootloader mr-bml auf Basis von GRUB 2.13 entwickelt, sowie die Standardbibliothek libc und das Programmset quser. Das Programmset umfasst die Kommandozeile qsh basierend auf mksh, ein Init-System und eine Sammlung typischer Unix-Dienstprogramme wie ls, cat, ps, lspci und login.

Der Mikro-Kernel Skimmer verwendet eine von dem Projekt DragonFly BSD übernommene Implementierung von leichten Threads im Kernel (LWKT, Light Weight Kernel Threads) mit CPU-gebundenen Arbeitswarteschlangen und Nachrichtenübertragungs-Primitiven (msgport). QSOE ermöglicht die Verwendung verschiedener Kerne mit einer einheitlichen Benutzerumgebung und einem Satz von Treibern, die sich beim Wechsel des Kernels nicht ändern. Im Zusammenhang mit den Kernen werden nur der Task-Manager (taskman) und die Bibliothek libc zusammengestellt, die als Bindeglied über die QNX-ähnlichen APIs fungiert, die von den Mikro-Kernen bereitgestellt werden.

┌──────────────────────────────────────────────────────────┐
│ qsh + treiber + utils (dynamisch verlinkt) │
├──────────────────────────────────────────────────────────┤
│ libc.so (gemeinsamer Code; LQ-spezifische Nahtstelle in lq/libc/) │
│ rtld (von FreeBSD abgeleitet; BSD-2-Clause) │
├──────────────────────────────────────────────────────────┤
│ taskman Prozess / Speicher / Pfadmanager │
│ libtaskman tragbare taskman-Basis (Pfad / Berechtigung / │
│ syscfg / sync / reloc / cpio / elf) │
├──────────────────────────────────────────────────────────┤
│ seL4 Mikro-Kernel (RISC-V Sv39, formal verifiziert) │
│ elfloader (lädt Kernel + taskman) │
└──────────────────────────────────────────────────────────┘

Die erste Ausgabe von QSOE ist bemerkenswert, da sie die Möglichkeit bietet, auf der echten SiFive Unmatched (FU740) Platine mit NVMe-Speicher zu booten und auf die Kommandozeile zuzugreifen. Ein erfolgreicher Boot-Vorgang wurde für Konfigurationen mit beiden Kernen (QSOE/L und QSOE/N) realisiert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4