A fost lansată prima versiune a sistemului de operare QSOE, proiectat în stil QNX și livrat cu două microkernel-uri interschimbabile, „Skimmer” și „seL4”. La nivel de kernel, sunt executate doar sistemul de distribuție a resurselor, mecanismul de schimb de mesaje sincronizat (QNX IPC) și un kernel minimal, toate celelalte componente fiind realizate în spațiul utilizatorului. Se suportă funcționarea pe CPU-uri pe 64 de biți cu arhitectura RISC-V. Sistemul de operare a fost testat pe placa SiFive HiFive Unmatched și în QEMU. Codul proiectului este scris în limbajul C și este distribuit sub licența Apache 2.0.
Sunt disponibile opțiuni: QSOE/N cu propriul microkernel Skimmer și QSOE/L pe baza microkernel-ului seL4, care are o verificare formală a fiabilității pentru arhitectura RISC-V. În plus, se dezvoltă încărcătorul mr-bml bazat pe GRUB 2.13, biblioteca standard libc și un set de programe quser. În setul de programe se include un shell de comandă qsh, bazat pe mksh, sistemul de inițializare și un set de utilitare unix standard, precum ls, cat, ps, lspci și login.
Microkernel-ul Skimmer folosește o implementare a thread-urilor ușoare în kernel (LWKT, Light Weight Kernel Threads) preluată de la proiectul DragonFly BSD, cu cozi de lucru atașate la CPU și primitivile de transfer de mesaje msgport. QSOE permite utilizarea diferitelor kernel-uri cu un singur mediu utilizator și un set de drivere, care nu se schimbă la schimbarea kernel-ului. Atașat la kernel-uri sunt construite doar managerul de sarcini (taskman) și biblioteca libc, care servește ca un wrapper pentru API-urile de tip QNX furnizate de microkernel-uri.
┌──────────────────────────────────────────────────────────┐
│ qsh + drivere + utilitare (legate dinamic) │
├──────────────────────────────────────────────────────────┤
│ libc.so (corpul comun; cusătură specifică LQ în lq/libc/) │
│ rtld (derivat din FreeBSD; BSD-2-Clause) │
├──────────────────────────────────────────────────────────┤
│ taskman manager de procese / memorie / cale │
│ libtaskman corpul portabil al taskman-ului (cale / cred / │
│ syscfg / sincronizare / relocare / cpio / elf) │
├──────────────────────────────────────────────────────────┤
│ microkernel seL4 (RISC-V Sv39, verificat formal) │
│ elfloader (încarcă kernel-ul + taskman) │
└──────────────────────────────────────────────────────────┘
Prima lansare a QSOE se remarcă prin realizarea posibilității de încărcare și acces în shell-ul de comandă pe placa reală SiFive Unmatched (FU740) cu stocare NVMe. Încărcarea reușită a fost realizată pentru configurații cu ambele nuclee (QSOE/L și QSOE/N).
Sursa: opennet.ro
