Fait"> En progrès"> En attente"> Pas commencé"> Résolu"> Non résolu"> %developers; ]> &header;
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.
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)).
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. | &a.archie; | 10 Septembre 2002 | &status.done; |
| libpthread | Repo-copy de la bibliothèque libpthread à partir de libc_r. | responsable du cvs | 16 Septembre 2002 | &status.done; |
| libpthread | Utiliser KSE pour ordonnancer les processus. | &a.mini; | 30 Octobre 2002 | &status.done; |
| libpthread | Ordonnancer un contexte "inactif" si nécessaire. | &a.mini; | 2 Novembre 2002 | &status.done; |
| libpthread | Envoyer des signaux aux threads. | &a.deischen; &a.davidxu; | 28 Juin 2003 | &status.done; |
| libpthread | Verrous pour le SMP. | &a.deischen; | 3 Mai 2003 | &status.done; |
| noyau | Verrous pour le SMP. | &a.davidxu; | 3 Mai 2003 | &status.done; |
| libpthread | Lancer plusieurs KSEs (un par processeur). | &a.davidxu; | 3 Mai 2003 | &status.done; |
| libpthread, noyau | Implémenter des fonctions machine-dépendantes pour la plateforme alpha. | &a.marcel; | 30 Août 2003 | &status.wip; |
| libpthread, noyau | Implémenter des fonctions machine-dépendantes pour la plateforme amd64. | &a.davidxu; &a.deischen; | 30 Août 2003 | &status.done; |
| libpthread, noyau | Implémenter des fonctions machine-dépendantes pour la plateforme i386. | &a.davidxu; &a.deischen; | 30 Août 2003 | &status.done; |
| libpthread, noyau | Implémenter des fonctions machine-dépendantes pour la plateforme ia64. | &a.marcel; | 30 Août 2003 | &status.done; |
| libpthread, noyau | Implémenter des fonctions machine-dépendantes pour la plateforme sparc64. | &a.jake; | 30 Août 2003 | &status.wip; |
| noyau | Implémenter la gestion des signaux spécifique à KSE. | &a.davidxu; | 28 Juin 2003 | &status.done; |
| libpthread | Implémenter les threads dans le domaine système. | &a.deischen; | 3 Mai 2003 | &status.done; |
| noyau | Améliorer la performance des threads du domaine système (pas de nouveaux appels si bloqués). | &a.davidxu; | 30 Août 2003 | &status.done; |