Actif #osdev #kernel #C #x86-64

OS-R

Un système d'exploitation conforme POSIX pour x86-64, écrit de zéro.

LangageC / C++ / Assembly
RôleAuteur
Stack CC++x86-64 assemblyLLVMLimineMultiboot2

OS-R est un système d’exploitation conforme POSIX pour x86-64, écrit de zéro en C, C++ et assembleur. Ça a commencé parce que je voulais savoir ce qu’un noyau fait réellement au démarrage, et lire à ce sujet ne m’y menait pas.

Démarrer depuis n’importe quoi #

Multiboot2 vous donne une machine en mode protégé 32 bits. Limine vous en donne une déjà en long mode, avec la pagination activée. U-Boot fait encore autre chose. L’approche évidente est un chemin d’entrée séparé par bootloader, ce qui signifie trois versions du code le plus précoce et le moins testable du noyau.

À la place, chaque bootloader entre par le même trampoline ELF, qui normalise l’état de la machine avant que le moindre code du noyau ne s’exécute. J’en ai parlé dans Bootloader-Agnostic Kernels.

Le reste #

Le noyau est en higher-half, avec une gestion de la mémoire virtuelle et une couche d’appels système. J’ai porté une libc et la chaîne d’outils LLVM, de sorte que les programmes userland peuvent être compilés directement sur le système plutôt que cross-compilés depuis mon ordinateur portable.