Le mercredi 09 juin 2004 a 02:23:42, Yves Martin a ecrit :
> Selon Bernard Cassagne <Bernard.Cassagne@???>:
>
> > Yves Martin wrote:
> >
> > > De souvenir, je crois que les premiers Linux x86 de Linus utilisaient la
> > > segmentation pour ce problème justement - mais a été refait avec
> > uniquement
> > > de la pagination pour la portabilité entre plateformes.
>
> > Tu es sur ?
>
> Non mais j'ai retrouvé un vieux mail
> (Merci Google: rechercher 'Linux history segmentation')
> http://www-2.cs.cmu.edu/~awb/linux.history.html
>
> D'après ce que j'ai pu comprendre, le task-switching de l'époque utilise
> les segments.
>
> dans la version actuelle mais je pense que Linux
> définit un seul segment qui couvre toute la mémoire (avec droit en exécution)
> et que sa valeur est posée dans tous les registres de segment (CS, DS, ES,
> FS, GS, SS)
>
> > J'ai toujours entendu dire que personne n'avait fait d'OS avec support
> > des segments par manque de gestion du concept de segment par gcc/gld/gas
>
> C'est effectivement un problème. Mais un code assembleur inline permet
> de changer les valeurs des segments et cela devrait suffire au niveau du
> kernel (un segment CS pour le code, un pour les données DS (et copie dans
> ES, FS, GS), un pour la pile SS pour chaque application)
> Une fois que le kernel les définit pour l'application, l'application n'a pas
> besoin d'y toucher (d'ailleurs elle aurait du mal si elle ne connaît pas leur
> valeur exacte).
pour une application il reste le probmeme du code genere par C pour un pointeur
sur une variable dans la zone data et un pointeur sur une variable locale
>
> Ce qui me fait sourire, c'est le message "segmentation fault",
> "pagination fault" serait plus exact ;)
>
> --
> Yves Martin
>