La norme du langage C fournit une interface standardisée
pour la gestion de la mémoire, dans la libc,
principalement le duo malloc/free.
C'est le compilateur C qui doit transformer cette interface en une série d'appels système, dépendant de l'OS. On regarde par exemple comment c'est fait sous Unix.
strace (et sa variante truss
sous Solaris) sert à savoir quels sont les appels système utilisés
pendant l'exécution d'un programme. Il s'agit donc de regarder les
intercations du programme avec le noyau (NB: ce n'est pas le même genre
de diagnostic que fournit un débugguer comme gdb qui
se place au niveau du langage C, ou bien adb qui est au
niveau assembleur.)
brk qui fixe la taille du segment de données,
et mmap qui fait se correspondre un fichier et
la mémoire.
mmap pour faire de la copie de fichiers.
Comparer la vitesse d'exécution par rapport à une boucle
read/write.
malloc en n'utilisant
que l'appel système brk. On programmera juste les fonctions
Malloc et Free.
mmap avec l'option MAP_SHARED et comparer
les deux approches.
/tmp et le swap sont sur une même
partition, plus rapide d'accès que les partitions habituelles.
Est-ce perceptible avec votre programme ?