Devoir 4

Transcription

Devoir 4
8INF341 Système d’exploitation
(À remettre vendredi le 2 avril 2010 à 13h00)
Devoir 4
1
Instructions
• Lisez les 10 premières pages du document Inside memory management
Ce document est disponible en version PDF sur la page Web du cours
et le code source est disponible à l’adrese:
http://www.ibm.com/developerworks/linux/library/l-memory/sidefile.html
• Dans votre répertoire maison sur sunensdev, vous devez créer un répertoire
dont le nom est Devoir4. Ce répertoire devra contenir votre fichier
malloc.c qui ne doit pas contenir de fonction main.
• Votre programme doit pouvoir être compilé sur Mac OS X ou Solaris
et exécuté sans modification.
• Le première ligne de votre code source doit contenir en commentaire le
nom des coéquipiers.
• Avant la date limite, vous devez déposer dans mon casier (près du
secrétariat) un document papier sur lequel on retrouve:
– Vos nom et prénom
– Votre nom d’usager et votre mot de passe sur sunensdev
– La réponse aux question 2,3 4 et 5.
– Le code source de votre fonction realloc
• Vous serez évalué pour la rectitude et la qualité de vos réponses.
1
2
Questions
1. Copier le code source dans un fichier que vous nommerez malloc.c
Ce fichier ne doit pas contenir de fonction main. Vous devez écrire
une fonction realloc que vous intègrerez aux fonctions malloc et free
déjà présentes dans votre fichier malloc.c. Consulter le manuel pour
connaı̂tre la description exacte de realloc
Votre fonction sera testée à l’aide d’un fichier contenant une fonction
main ainsi que la commande:
#include "malloc.c"
Veuillez noter qu’il faut utiliser le compilateur gcc (et non g++) et que
l’option -share n’est disponible ni sur Solaris, ni sur Mac OS X.
2. Dans le document il est dit que cette version de malloc et free n’est
pas ”thread-safe”. Expliquez précisément pourquoi. Expliquez aussi
comment corriger cette situation. Note: Une fonction est thread-safe
si elle fonctionne correctement durant une exécution simultanée par
plusieurs threads.
3. Dans le document il est dit que cette version de malloc et free n’est pas
efficace dans un contexte de mémoire virtuelle. Expliquez précisément
pourquoi. Expliquer aussi comment on pourrait modifier le code afin
d’améliorer substantiellement la performance.
4. Expliquez pourquoi il serait nécessaire de minimiser le nombre d’appels
à sbrk. Expliquez comment on pourrait modifier le code afin de réduire
significativement le nombre d’appels à sbrk sans gaspiller les ressources.
Par exemple, donner la valeur maximale au system break dès le début
de l’exécution d’un processus est inacceptable.
5. Dans le document, on indique que cette version de malloc ne peut pas
être utilisée par un programme qui utilise mmap. Expliquez pourquoi.
2