129 | | * Le compilateur sait à quelle position le champ élément de liste (dont on lui donne le nom) se trouve dans la structure porteuse (dont on lui donne le type) et il peut déduire l'adresse de la structure porteuse à partir de l'adresse de l'élément avec une simple soustraction : @élément - position |
130 | | ''' |
131 | | }}} |
132 | | 1. À quoi sert l'allocateur de pile user ? Qui demande l'allocation ? Qui utilise les piles ? Est-ce que ces piles ont une taille variable ? |
133 | | {{{#!protected ------------------------------------------------------------------ |
134 | | ''' |
135 | | * |
136 | | ''' |
137 | | }}} |
138 | | 1. Où sont allouées les piles ? Peut-on en allouer autant que l'on veut ? dites pourquoi. |
139 | | {{{#!protected ------------------------------------------------------------------ |
140 | | ''' |
141 | | * |
| 129 | * Le compilateur sait à quelle position le champ élément de liste (dont on lui donne le nom) se trouve dans la structure porteuse (dont on lui donne le type) et il peut déduire l'adresse de la structure porteuse à partir de l'adresse de l'élément avec une simple soustraction : adresse élément - position dans la structure |
| 130 | * c'est la macro `list_item( &element, type_porteuse, nom_champ_élément)` |
| 131 | * La question n'est pas posée, mais comprenez que c'est une macro, ce n'est pas une fonction parce que c'est un calcul fait par le compilateur. |
| 132 | ''' |
| 133 | }}} |
| 134 | 1. À quoi sert l'allocateur de piles user ? Qui demande l'allocation ? Qui utilise les piles ? Est-ce que ces piles ont une taille variable ? |
| 135 | {{{#!protected ------------------------------------------------------------------ |
| 136 | ''' |
| 137 | * L'allocateur de piles user sert pour les threads de l'application, il faut une pile par thread pour les contexte d'exécution des fonction. |
| 138 | * C'est le noyau qui fait l'allocation des piles lorsqu'il crée les threads et ce sont les threads qui les utilisent. |
| 139 | * Dans l'état actuel de kO6, la taille des piles n'est pas paramétrable. |
| 140 | ''' |
| 141 | }}} |
| 142 | 1. Où sont allouées les piles user ? Peut-on en allouer autant que l'on veut ? dites pourquoi. |
| 143 | {{{#!protected ------------------------------------------------------------------ |
| 144 | ''' |
| 145 | * Les piles user sont allouées dans la partie haute du segment `.data`. |
| 146 | * On ne peut pas en allouer autant qu'on veut parce que le segment n'est pas infini. |
| 147 | * Le segment `.data` contient aussi les variables globales de l'application dans la partie basse et les piles ne doivent pas entrer en collision, pas d'intersection. |