[Kos-dev] Quelques explications

Thomas Petazzoni thomas.petazzoni at enix.org
Fri Dec 26 13:23:07 CET 2003


Salut,

On Wed, 10 Dec 2003 18:11:34 +0100
Thomas Petazzoni <thomas.petazzoni at enix.org> wrote:

> Pour démapper une partie de l'espace de l'adressage [ start ; end ],
> je parcours chaque page de l'espace [ start ; end ] pour savoir sur
> quelle région ça porte. En fonction de la position de la zone [ start
> ; end ] par rapport à la région courante, j'appelle soit une fonction
> split, soit une fonction shrink, soit une fonction del. 
> 
> Le problème, c'est que je peux potentiellement avoir a appeler
> successivement un shrink, puis un del. Si le shrink réussit
> (result=0), mais que le del foire (result < 0), comment faire pour
> retourner le tout dans un état cohérent ?
> 
> En gros le problème est le suivant :
> 
>  pour toutes les pages de [ start ; end ] faire
>   result = dégager la région qui nous embête
>   if (result < 0) {
>     Aïe aïe aïe misère de misère, je fais quoi moi ?
>   }
>  fpour
> 
> Comment faire ?

Je n'ai pas eu de réponse à ce sujet, mais j'ai quand même réfléchi de
mon coté.

En fait, j'ai constaté que la seule raison qui pourrait faire foirer le
processus, c'est dans le cas où on doit splitter une région. En effet,
dans ce cas, on doit allouer une nouvelle région, ce qui peut échouer.
Donc mon idée, c'est de parcourir 2 fois les régions. La première fois,
on note juste le nombre de régions qu'on doit créer. Ensuite, on alloue
ce nombre de régions, et enfin, on parcourt de nouveau pour appliquer
les modifications, ce qui ne peut pas échouer.

Voilà pour l'instant la solution que j'ai trouvé. Il y a peut être moyen
d'améliorer, mais c'est tout ce que j'ai pour le moment.

Enfin, de toute façon, c'est un détail par rapport au travail de
synchronisation qu'il y a à faire.

A+

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org 
http://www.enix.org/~thomas/ - Jabber: kos_tom at sourcecode.de
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://the-doors.enix.org/pipermail/kos-dev/attachments/20031226/3d8715fc/attachment.pgp


More information about the Kos-dev mailing list