[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]
Re: Correcteur 101 pour Linux
- To: Fabien Ninoles <>
- Subject: Re: Correcteur 101 pour Linux
- From: Michel Dagenais <>
- Date: Wed, 13 Oct 1999 09:42:19 -0400
-
In-reply-to: <[email protected]>
Fabien Ninoles <[email protected]> writes:
> Je ne pense pas que la vitesse soit tres differentes toutefois dans
> le cadre de grosse applications: Les librairies sont habituellement
> toutes charger en memoire des le depart et ensuite l'application ne
> fait pas vraiment la difference [il n'y en n'a pas pour elle]. Toutefois,
> je suis loin d'etre certain de ce que j'avance et si quelqu'un peut
> me pointer vers de la bonne documentation concernant la facon dont
> Linux gere le "dynamic linkage", je serais tres interesse.
Il y a plusieurs aspects à la chose. Avec le link statique, seulement
les fonctions requises sont incluses et peuvent être appelées directement.
Avec le link dynamique, les pages utilisées de la librairie sont
chargées à la demande avec le mécanisme habituel de "paging" et les
accès aux fonctions en librairies et aux variables globales se font
avec un niveau d'indirection.
La conséquence est que le programme avec "link" dynamique prend un peu plus
d'espace pour chaque programme car chaque page peut contenir des
fonctions non utilisées au travers, mais peut prendre beaucoup moins
d'espace au total si la même librairie est utilisée par plusieurs
programmes puisqu'elle est partagée (i.e. tous les programmes qui
s'exécutent pointent vers la même copie de la librairie en mémoire).
Sur disque il y a une économie importante puisque cela évite d'avoir
une copie d'une partie de la librairie dans chaque exécutable.
Au niveau temps d'exécution, hormis l'utilisation de la mémoire qui peut
avoir une incidence, le départ est plus court pour un programme dynamique
si les librairies requises sont déjà là. Ensuite, le programme dynamique
est très légèrement plus lent (accès indirect aux fonctions et variables
globales). Sur le i386, on perd un registre lorsqu'on utilise le link
dynamique. Au total ce peut être quelques % de plus lent, ce qui est
peu comparé à la flexibilité gagnée.
Le détail de tout cela se trouve dans: Mary Lou Nohr, "Understanding
ELF Object Files and Debugging tools", Prentice Hall, 1994.
--
Prof. Michel Dagenais http://m3.polymtl.ca/dagenais
Département de génie informatique [email protected]
Ecole Polytechnique de Montréal tel: (514) 340-4711 ext.4029