[Kos-dev] Juste pour informations
Hlide
kos-dev@enix.org
Tue, 17 Jul 2001 22:50:16 +0200
On génère un code qui est totalement indépendant de l'adresse où il peut
être mappé. Je te conseille de compiler un source C simple (quelque
fonctions globales qui s'appellent) avec l'option -fPIC et -S, puis de
regarder le source assembleur généré : tu verras que l'on utilise le
registre %ebx spécifiquement pour appeler les fonctions globales. Comme il
n'y a plus de référence directe à une adresse de code précise, on peut
mapper ce code à des adresses linéaires différentes pour chaque "team" et
l'exécuter.
----- Original Message -----
From: Thomas Petazzoni <thomas.petazzoni@ifrance.com>
To: <kos-dev@enix.org>
Sent: Tuesday, July 17, 2001 9:45 PM
Subject: [Kos-dev] Juste pour informations
> Bonjour,
>
> Nous ne savions pas trop quoi faire des multiples threads que peut gerer
> une team lorsque celle-ci est recopiee pour former un nouvelle team.
>
> Eh voici un extrait de glibc-2.2.1/sysdeps/unix/sysv/linux/execve.c :
>
> int
> __execve (file, argv, envp)
> const char *file;
> char *const argv[];
> char *const envp[];
> {
> /* If this is a threaded application kill all other threads. */
> if (__pthread_kill_other_threads_np)
> __pthread_kill_other_threads_np ();
>
> Ca a la merite d'etre clair. Etant donne ceci, il est clair que pour le
> vfork c'est pas la peine de s'embeter a recopier toutes les donnees
> concernant tous les threads. Mais concernant le fork() standard ?
>
> Autre question plus importante : comment il fait Linux pour reloger
> dynamiquement ? Il charge toujours la librairie ld.so au meme endroit
> (0x4000000) apparemment, et c'est cette librairie qui se charge de
> linker dynamiquement le fichier executable avec les librairies
> necessaires (libc et autres). En effet j'ai remarque que l'adresse de la
> libc n'etait pas toujours la meme, et donc le seul moyen c'est de linker
> dynamiquement le machin. J'ai pas vraiment trouve les sources de ce
> ld.so, c'est dans les sources de la glibc ? Il semblerait que le
> repertoire elf/ corresponde a peu pres.
>
> Thomas
> --
> PETAZZONI Thomas
> thomas.petazzoni@meridon.com UIN : 34937744
> Projet KOS : http://kos.enix.org
> Page Perso : http://www.enix.org/~thomas/
>
>
> _______________________________________________
> Kos-dev mailing list
> Kos-dev@doors.enix.org
> http://the-doors.enix.org/cgi-bin/mailman/listinfo/kos-dev
>