Skip site navigation (1) Skip section navigation (2)

Projet KSE

Contenu

Aperçu

Le Kernel Scheduler Entities (KSE), est un système de threading supporté par le noyau, au design similaire à celui du Scheduler Activations [Anderson, et. al.]. Il établit un équilibre entre les modèles de threading de niveau utilisateur (1:N) et de niveau noyau (1:1), apportant la plupart des avantages des deux et peu d'inconvénients de chacun.

Le projet se compose de deux moitiés : le support noyau et le support utilisateur. Le support noyau consiste en modifications du scheduler FreeBSD; L'autre moitié est une implémentation des threads POSIX® qui tire avantage des facilités supplémentaires que procure le noyau.

Le but est de remplacer l'actuel système de threads utilisateur procuré par la libc_r, et l'option -pthread de gcc, par une nouvelle bibliothèque libpthread qui sera liée avec l'option -lpthread de gcc.

Utilisation de KSE

Tout le developpement du KSE est effectué sur la version 5.0-CURRENT. Aucune option de configuration du noyau n'est requise pour compiler un noyau avec les changements relatifs au KSE (ces changements sont inextricables du scheduler de FreeBSD).

Pour utiliser KSE dans une application, vous devez lier celle-ci à libpthread, ce qui est assez simple. Dans ses makefiles, remplacez le paramètre de compilation -pthread ou l'option de lien -lc_r par -lpthread et refaites l'édition des liens. Vous pouvez aussi utiliser /etc/libmap.conf pour associer libc_r à libpthread (voir libmap.conf(5)).

Lectures complémentaires

Etat du projet

Ceci est une liste incomplète de tâches :

Module Tâche Responsable Dernière mise à jour Etat
libpthread Ecrire la page de man kse(2) documentant les nouveaux appels système. Archie Cobbs 10 Septembre 2002 Fait
libpthread Repo-copy de la bibliothèque libpthread à partir de libc_r. responsable du cvs 16 Septembre 2002 Fait
libpthread Utiliser KSE pour ordonnancer les processus. Jonathan Mini 30 Octobre 2002 Fait
libpthread Ordonnancer un contexte "inactif" si nécessaire. Jonathan Mini 2 Novembre 2002 Fait
libpthread Envoyer des signaux aux threads. Daniel Eischen David Xu 28 Juin 2003 Fait
libpthread Verrous pour le SMP. Daniel Eischen 3 Mai 2003 Fait
noyau Verrous pour le SMP. David Xu 3 Mai 2003 Fait
libpthread Lancer plusieurs KSEs (un par processeur). David Xu 3 Mai 2003 Fait
libpthread, noyau Implémenter des fonctions machine-dépendantes pour la plateforme alpha. Marcel Moolenaar 30 Août 2003 En progrès
libpthread, noyau Implémenter des fonctions machine-dépendantes pour la plateforme amd64. David Xu Daniel Eischen 30 Août 2003 Fait
libpthread, noyau Implémenter des fonctions machine-dépendantes pour la plateforme i386. David Xu Daniel Eischen 30 Août 2003 Fait
libpthread, noyau Implémenter des fonctions machine-dépendantes pour la plateforme ia64. Marcel Moolenaar 30 Août 2003 Fait
libpthread, noyau Implémenter des fonctions machine-dépendantes pour la plateforme sparc64. Jake Burkholder 30 Août 2003 En progrès
noyau Implémenter la gestion des signaux spécifique à KSE. David Xu 28 Juin 2003 Fait
libpthread Implémenter les threads dans le domaine système. Daniel Eischen 3 Mai 2003 Fait
noyau Améliorer la performance des threads du domaine système (pas de nouveaux appels si bloqués). David Xu 30 Août 2003 Fait