[SOS] Synchronisation

David MENTRE dmentre at linux-france.org
Mer 16 Avr 20:53:50 CEST 2008


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