[Kos-dev] Double fault : ca continue
d2
kos-dev@yoda.isnpro.com
21 Feb 2001 14:29:57 +0100
>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@ifrance.com> writes:
Thomas> peu plus de pile que prevu ? bref, pour l'instant je
Thomas> comprends pas tout... pour moi notre solution est l'unique
Thomas> solution, mais il semblerait que non. quelqu'un pour
Thomas> m'expliquer ?
Leif veut pas du demand paging sur les piles cpl0. Ca se discute. De
meme, il indique que le doublefault doit etre un dernier recours. Ok.
Plusieurs questions :
- que se passe-t'il quand, une fois le handler de doublefault lance,
ce handler fait une exception (p.ex : page fault) ? Est-ce que ca
genere une triple fault ou une #PF (j'insiste : le handler de
double fault a ete appele avec succes, et est en cours
d'execution).
- Est-ce bien vraiment vrai qu'il n'y a aucun moyen de recuperer
l'id de la fault precedente quand on est dans un doublefault ?
Sinon, c'est pas trop grave, du moment qu'on peut retourner dans
le contexte interrompu (qui est celui d'une exception). A verifier.
Sinon, cote alternatives de realisation, on a pas trop le choix :
- Demand paging sur les piles cpl0 + cas particulier doublefault (task gate)
-> necessite d'etre sur qu'une exception dans le doublefault n'entraine
pas de triple fault
- Demand paging sur les piles cpl0 + exceptions en task-gate.
- Mapping statique de (petites) piles cpl0
- un pool de piles cpl0 plus grandes, mais en nombre limite, qu'on
assigne a la volee aux cpl3 qui font des syscalls ou qui sont
running. Je pense pas que ca soit coherent, car ca revient a dire
que toutes les taches ont forcement leur pile cpl0, donc qu'il n'y
a pas d'assignement de pile "a la volee" a faire au sain du pool :
on est dans le cas precedent en somme.
Bref, si la 1ere solution est dangereuse, il en reste 2 (la 4eme est
incoherente et revient a la 3).
Sinon, une interrogation : a-ce vraiment un sens de parler de threads
noyau (donc cpl0) "stand alone", c'est a dire non associes a un
contexte cpl3 ? En fait, je crois que si on se lance serieusement
la-dedans, on s'oriente vers qqch de bancal.
Sinon, rajoute ton patch bochs sur le CVS (module kos-contrib par
exemple).
Voila.
--
d2