Travail en cours de développement

De manière imminente

Gestion mémoire

  • Côté architecture :
    • AddressSpace : développer la gestion de l'espace d'adressage utilisateur (mm/addressspace.cpp:112)
    • Dans le cas d'un système multi-processeur, utiliser l'IPC de l'APIC pour envoyer un message à tous les processeurs pour invalider les pages à invalider.
  • Côté indépendant du noyau :
    • KMalloc : Rajouter des spinlock dans les structure du kmalloc (mm/kmalloc.cpp:46)
    • KMalloc : Trouver un moyen pour allouer les morceaux de mémoire disponibles avec un système rapide pour savoir si le morceau de mémoire à libérer fait parti des morceaux ou de l'allocateur SLAB

Périphériques de l'architecture 80x86 ou gestion logique du noyau (côté architecture )

  • APIC :
    • Développer l'utilisation du timer de l'APIC (kernel/apic.cpp)
    • Développer la mise en place de l'IPC par l'APIC (kernel/apic.cpp)
  • Thread :
    • Création du contexte d'un thread pour un processus utilisateur (kernel/thread.cpp:90)
    • Gestion plus poussée de la sauvegarde du contexte d'un thread (kernel/thread.cpp:164)
    • Gestion plus poussée de la restauration de contexte d'un thread (kernel/thread.cpp:177)
  • Time :
    • Rajout de la prise en compte des années multiples de 400 qui ne sont pas bissextiles (kernel/time.cpp:81)

Gestion logique du noyau (indépendemment du noyau)

  • Errno :
    • Recherche ou modification de la valeur de errno pour le thread en cours (kernel/errno.cpp)
  • KPrint :
    • Suppression de l'action dans le kprint (kernel/kprint.cpp:57)
  • BUS noyau (basé sur D-BUS ?) :
    • Création d'une fonction permettant d'enregistrer les nouveaux périphériques en proposant un mécanisme universel qui permette à chaque pilote de donner toutes les informations utiles sur le nouveau périphérique
  • panic :
    • Utilisation du kprint avec KERN_EMERG ou du panic mais pas un mix des deux
  • Sysctl :

Ordonnanceur

  • Timer :
    • Création de l'API permettant de mettre en veille un thread ou de placer une alarme sur un thread.
  • Scheduler
    • Rajouter le support de l'ordonnancement sur un multi-processeur
    • S'il y a plus d'un processeur au travail et qu'un processeur n'aura plus rien à faire, il peut se couper indéfiniment. Alors, une IPC lui sera envoyé pour le réveiller dans le cas de l'attribution d'une nouvelle tâche à accomplir.
    • Rajouter des fonctions à l'API pour pouvoir récupérer des informations comme le code de sortie d'un thread qui vient de se terminer (qui devient alors un zombie).
    • Rajouter une fonction à l'API pour pouvoir attendre la fin d'un thread.

Gestion fichier

  • VFS :
    • Mettre en place tout le VFS (cache fichier, cache répertoire, table de montage, ...)
  • Système de fichier :
    • Écrire la structure d'un système de fichier utilisé par le VFS pour accéder à des fichiers
    • Écrire le système de fichier AIRFS et monter le AIRD à l'initialisation

Ultérieurement

Gestion mémoire

  • Côté architecture :
    • Init : libération de la mémoire initialement utilisée par le noyau à la fin de l'initialisation (mm/init.cpp:618)
    • KMap : mettre des pages logiques sur disque pour libérer des pages logiques (mm/kmap.cpp:328)
  • Côté indépendant du noyau :
    • physmem : mettre des pages physiques sur disque pour en libérer (mm/physmem.cpp:197)

Gestion logique du noyau (indépendemment du noyau)

  • Time :
    • Support du décalage horaire

Bibliothèque noyau

  • Unicode :
    • Unifier la conversion de l'unicode vers un encodage particulier pour l'initialisation du noyau et permettre de basculer une fois l'initialisation finie lorsque les terminaux pourront supporter nativement l'unicode (traduction alors vers la police disponible)
    • Recoder un UChar plus propre
  • VSprintf :
    • Rajouter le support des nombres à virgule flottante