[SOS] Synchronisation

Julien Lecomte julien.lecomte at gmail.com
Jeu 17 Avr 05:21:18 CEST 2008


Merci a tous pour avoir pris la peine de repondre. Je n'avais pas
compris le concept de noyau non preemptible. Maintenant, tout est plus
logique.

- Julien -


2008/4/16 Thomas Petazzoni <thomas.petazzoni at enix.org>:
> Le Wed, 16 Apr 2008 20:53:50 +0200,
>  David MENTRE <dmentre at linux-france.org> a écrit :
>
>
>  > Non pas besoin de synchro car comme dit dans sa description[1] SOS est
>  > un « noyau de type monolithique, interruptible, non préemptible ». En
>  > d'autres termes, quand tu es en mode noyau ton code ne peut pas être
>  > interrompu sauf quand tu le décide (« non préemptible ») sauf par un
>  > handler d'interruption (« interruptible »).
>  >
>  > Par contre, il y a besoin de synchros entre les handlers
>  > d'interruptions et le reste du noyau. Un moyen simple est de
>  > désactiver toutes les interruptions temporairement
>  > (sos_disable_IRQs()).
>
>  Rien à ajouter, c'est tout à fait exact.
>
>  Pour ajouter quand même quelque chose à ce message, je peux préciser
>  que le noyau Linux était également à l'origine non préemptible: une
>  fois qu'une tâche exécutait du code en mode noyau, alors elle ne
>  pouvait pas être préemptée par une autre tâche. Au moment où le support
>  SMP a été introduit, les développeurs ont choisi la solution simple du
>  Big Kernel Lock (plus connu sous le nom de BKL) : un gros verrou pris
>  quand on commence l'exécution du code noyau, et relâché quand on
>  repasse en mode utilisateur. Grâce à ce verrou, deux processeurs
>  différents ne pouvaient pas exécuter en même temps du code noyau.
>  Ainsi, le code noyau n'avait pas besoin de se préoccuper de la
>  synchronisation (en dehors de la synchro entre contexte processus et
>  contexte d'interruption). Mais évidemment, en termes de performances,
>  ce n'est pas idéal. D'abord en matière de scalabilité: plus on a de
>  CPUs, plus on a de chances d'avoir des CPUs qui ne font rien en
>  attendant qu'un autre CPU finisse d'exécuter son code noyau. Et en
>  terme de réactivité: si une tâche de plus haute priorité devient prête
>  pour l'exécution, alors elle doit quand même attendre que la tâche
>  actuelle termine son appel système, alors que cette dernière tâche est
>  peut-être de plus basse priorité, ce qui entraîne une augmentation de
>  la latence.
>
>  Enfin, à noter que KOS, le projet "père" de SOS, est lui totalement
>  préemptible. Dans le cas de SOS, David et moi avions fait le choix de
>  ne pas utiliser la préemption, afin de rendre le système plus simple.
>  Mais du coup, le système est peut-être trop différent de l'état de
>  l'art actuel, et les articles laissent donc de coté des préoccupations
>  actuelles importantes.
>
>  Bonne journée,
>
>  Thomas, en direct de http://embeddedlinuxconference.com/
>  --
>  Thomas Petazzoni, thomas.petazzoni at enix.org, http://thomas.enix.org
>  Jabber, thomas.petazzoni at jabber.dk
>  Toulibre, http://www.toulibre.org - APRIL, http://www.april.org
>  Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
>
> _______________________________________________
>  Sos mailing list
>  Sos at the-doors.enix.org
>  http://the-doors.enix.org/cgi-bin/mailman/listinfo/sos
>
>


Plus d'informations sur la liste de diffusion Sos