[SOS] Synchronisation
Julien Lecomte
julien.lecomte at gmail.com
Dim 27 Avr 21:06:36 CEST 2008
Qu'en est-il des kernel threads? Si un kernel thread manipule des
donnees globales, qu'il est interrompu par le timer, et qu'a l'issue
de l'execution de l'ISR du timer, l'ordonnanceur decide qu'un autre
processus doit prendre son tour. N'y a-t-il pas un probleme de
synchronization la? Il semble qu'il devrait y avoir des appels a
sos_disable_IRQs un peu partout (y compris dans sos/physmem.c, mais je
n'en vois aucun)
Amicalement,
Julien
2008/4/16 David MENTRE <dmentre at linux-france.org>:
> Bonjour,
>
>
>
> "Julien Lecomte" <julien.lecomte at gmail.com> writes:
>
> > J'étais en train de regarder le code de SOS, et me demande comment est
> > faite la synchronisation a l'intérieur du noyau. Par exemple, la
> > fonction sos_physmem_ref_physpage_new (sos/physmem.c) modifie la liste
> > nonfree_ppage (données globales). Il n'est pas impossible que le code
> > de cette fonction soit interrompu en plein milieu, puis executé par un
> > autre processus, en mode noyau. Ne devrait-il pas y avoir une section
> > critique la, ou je n'ai rien compris?
>
> 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()).
>
> Amicalement,
> david
>
> Footnotes:
> [1] http://sos.enix.org/fr/SOSOverview
>
> --
> GPG/PGP key: A3AD7A2A David MENTRE <dmentre at linux-france.org>
> 5996 CC46 4612 9CA4 3562 D7AC 6C67 9E96 A3AD 7A2A
>
Plus d'informations sur la liste de diffusion Sos