[SOS] Synchronisation
Julien Lecomte
julien.lecomte at gmail.com
Jeu 24 Avr 04:54:08 CEST 2008
Pardon, j'aurais du lire la deuxieme partie de la reponse... Par
contre, il y a toujours quelque chose que je ne comprends pas. Les
seuls moyens d'executer du code noyau, c'est bien soit de passer par
un handler d'interruption, soit par un appel systeme, qui n'est autre
qu'une exception (instruction int) Puisque SOS utilise des interrupt
gates, la CPU met le flag IF a 0 avant d'executer la routine
d'interruption. Ceci signifie que rien ne peut interrompre du code
noyau, pas meme une interruption materielle. Dans ce cas, il n'y a
jamais besoin de desactiver les interruptions depuis du code noyau.
Alors, qu'est-ce qui est faux dans ce que je viens de raconter?
Merci d'avance!
- Julien
2008/4/23 Julien Lecomte <julien.lecomte at gmail.com>:
> Salut,
>
> Mais alors, pourquoi les interruptions ont elles besoin d'etre
> desactivees dans ksynch.c? (par exemple dans la fonction
> sos_ksema_down)
>
> Merci d'avance!
>
> - 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