Changes between Version 27 and Version 28 of AS6-TME-B6


Ignore:
Timestamp:
Mar 29, 2022, 1:28:12 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B6

    v27 v28  
    127127   1. le type C de la structure porteuse
    128128   1. le nom du champ de l'élément de liste dans la structure porteuse.
    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}}}
     1341. À 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}}}
     1421. 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.
    142148'''
    143149}}}
     
    145151{{{#!protected ------------------------------------------------------------------
    146152'''
    147  *
     153 * Oui, les piles peuvent déborder, il n'y a aucun mécanisme pour se protéger. Un mécanisme possible serait de lever des exceptions ''accès mémoire interdit'' lorsqu'on sortirait d'une pile, mais il n'y en a pas.
    148154'''
    149155}}}