44 | | * |
45 | | ''' |
46 | | }}} |
47 | | 1. Dans un fichier exécutable (le programme) avant qu'il ne soit chargé en mémoire, on trouve le code du programme et les données globales. Est-ce qu'il y a aussi les piles d'exécution ? justifiez votre réponse |
48 | | {{{#!protected ------------------------------------------------------------------ |
49 | | ''' |
50 | | * |
| 44 | * Le processus y met son code et ses données globales et, nous le verrons plus tard, ses données dynamiques dans des segments obtenus par `malloc()` ou `mmap()`. Le processus y met aussi les piles d'exécution de ces threads. Dans l'implémentation actuelle du système, ces piles sont dans les variables globales, mais dans un vrai système, elles seraient allouées dynamiquement. |
| 45 | ''' |
| 46 | }}} |
| 47 | 1. Dans un fichier exécutable (le programme) avant qu'il ne soit chargé en mémoire, on trouve le code du programme et les données globales. Est-ce qu'il y a aussi les piles d'exécution des threads ? justifiez votre réponse. |
| 48 | {{{#!protected ------------------------------------------------------------------ |
| 49 | ''' |
| 50 | * Non, en principe non, puisque les piles sont créées à la volée à chaque création des threads. Mais, dans la version actuelle du système, qui n'a pas encore de service de mémoire dynamique, les piles des threads sont dans des variables globales de type `thread_s`, alors on peut se demander si elles sont dans le fichier. La réponse est non, parce que les variables globales thread de type `struct thread_s` ne sont pas initialisées. Elles sont donc dans une section `BSS` qui n'est pas vraiment dans le fichier objet. |