Aller au contenu principal

Annexe D : Diagramme d'exécution détaillé (LplKernel Sequence Flow)

Ce diagramme trace l’exécution de LplKernel à un niveau de détail extrême. Il combine les appels de fonctions réels du code source actuel (C/ASM) avec une projection architecturale des implémentations futures (EDF, SASOS, Zero-Syscall) définies dans la Roadmap et le Chapitre 10.

Figure D.1 : Le déroulé chronologique complet, du POST à la boucle FullDive. Douze acteurs répartis en quatre groupes (matériel et boot, cœur du noyau en ring 0, sous-systèmes noyau, espace utilisateur en ring 3), et le temps qui descend. Le diagramme s’ouvre sur les phases 1 à 3, celles qui sont déjà implémentées : le BIOS passe la main à GRUB, GRUB charge l’ELF du noyau et saute à _start avec le magic 0x2BADB002, puis boot.S monte le page directory initial, active la pagination et bascule en higher half avant d’appeler kernel_initialize().

Il se referme sur la boucle d’exécution cible, où trois activités se déroulent en parallèle. La frame de simulation VR poste ses requêtes dans une queue SPSC et continue de calculer sans jamais faire de INT 0x80, pendant qu’un CPU applicatif dédié dépile et complète. Le contournement réseau, en revanche, laisse la carte écrire les paquets UDP en RAM par DMA, sans lever la moindre interruption. L’ordonnanceur EDF, lui, recalcule ses échéances à chaque tick d’APIC et préempte dès que le budget de latence de 20 ms est menacé.

Le tracé mêle deux registres : les appels de fonctions réels du code actuel et une projection des implémentations à venir (EDF, SASOS, zéro-appel-système). Les phases portent l’annotation correspondante.

Dictionnaire des fonctionnalités anticipées

Pour rendre ce diagramme « immersif », plusieurs fonctions conceptuelles ont été extrapolées à partir de la Roadmap :

  • scheduler_edf_initialize() : Point d’entrée de la Phase 6. Remplace le RR par un calcul de deadline absolu (Liu & Layland).
  • vmm_sasos_enable_global_address_space() : Transition vers la Phase 10 (64-bit). Élimine les changements de CR3 entre processus.
  • sasos_allocate_pkey_domain() : Distribue une clé matérielle MPK. Le processus utilise l’instruction assembleur wrpkru pour s’isoler en 2 cycles CPU.
  • network_bypass_map_rx_to_userspace() : Implémentation du Data Plane (Phase 8). Le kernel épingle des frames physiques (kernel_pinned_memory_initialize) et dit à la carte réseau d’y écrire directement.
  • ipc_create_zero_syscall_channel() : Concrétisation de la Phase 9. Alloue un Ring Buffer SPSC partagé entre le Ring 3 et le Ring 0. Le CPU AP (Worker) fait du polling (spin) sur ce buffer, ce qui élimine les coûteux changements de contexte causés par INT 0x80.

LplKernel : architecture d’un moteur déterministe FullDive Version 1.2, juin 2026 Synthèse de multiples rapports de recherche et diagrammes