Changes between Version 18 and Version 19 of AS6-TME-B6


Ignore:
Timestamp:
Mar 28, 2022, 9:28:38 AM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B6

    v18 v19  
    77
    88Vous pouvez lire les [htdocs:cours/Archi-2-B6-alloc-2p.pdf slides de cours] pour voir les détails, mais voici le résumé des principes en quelques lignes.
    9 
    10 - **kO6 propose une API nommée `list` permettant de gérer les listes chaînées**
    11   - Cette API est définie dans le fichier `common/list.h` et elle est utilisable par le noyau et par l'application.
    12   - L'API `list` permet de chaîner des éléments de liste de type `list_t`, laquelle est une structure composée d'un double pointeur pointant vers d'autres structures `list_t`.
    13   - Les éléments de liste sont embarqués dans des structures porteuses.
    14   - Ce sont les éléments de type `list_t` qui sont chaînés entre eux, mais l'API `list` permets de retrouver le pointeur sur la structure porteuse de l'élément.
    15   - L'API `list` permets l'ajout et l'extraction d'éléments de liste au début, au milieu ou à la fin d'une liste.
    16   - L'API `list` permets aussi l'ajout d'élément en utilisant une relation d'ordre choisie par l'utilisateur pour obtenir des listes triées.
    17   - L'API `list` permets le parcours de tous les éléments d'une liste.
    189
    1910- **L'application et le noyau ont besoin d'allouer dynamiquement de la mémoire**.
     
    2819    - D'un autre côté, les piles des threads sont certes dans l'espace utilisateur, mais elles sont allouées par le noyau au moment de la création des threads. Leur taille est standard et fixe (dans un vrai système, on peut choisir leur taille à la création du thread, mais pas pour kO6).
    2920
     21
    3022- **Nous avons donc 3 allocateurs dans kO6** :
    3123  - un allocateur de variables dynamiques pour l'application ;
     
    3325  - un allocateur de variables dynamiques pour le noyau.
    3426  - L'allocateur de piles utilisateur et l'allocateur de variables doivent partager la zone libre laissée dans le segment `.data`. Ainsi l'allocateur de piles utilise la partie haute du segment `.data` et l'allocateur de variables utilise la partie basse.
     27
     28
     29- **kO6 propose une API nommée `list` permettant de gérer les listes chaînées**
     30  - Cette API est définie dans le fichier `common/list.h` et elle est utilisable par l'application et le noyau, notamment dans les allocateurs.
     31  - L'API `list` permet de chaîner des éléments de liste de type `list_t`, laquelle est une structure composée d'un double pointeur pointant vers d'autres structures `list_t`.
     32  - Les éléments de liste sont embarqués dans des structures porteuses.
     33  - Ce sont les éléments de type `list_t` qui sont chaînés entre eux, mais l'API `list` permets de retrouver le pointeur sur la structure porteuse de l'élément.
     34  - L'API `list` permets l'ajout et l'extraction d'éléments de liste au début, au milieu ou à la fin d'une liste.
     35  - L'API `list` permets aussi l'ajout d'élément en utilisant une relation d'ordre choisie par l'utilisateur pour obtenir des listes triées.
     36  - L'API `list` permets le parcours de tous les éléments d'une liste.
     37
    3538
    3639- **L'allocateur de piles pour les threads.**
     
    4043  - Quand une pile est libérée et qu'elle est celle placée à l'adresse la plus basse, alors la place qu'elle occupait est rendue au noyau.
    4144  - Le tri des piles libres permet d'augmenter la probabilité d'usage des piles placées en haut du segment `.data` et donc la libération des piles placées plus bas.
     45
    4246
    4347- **L'allocateur de variables dynamiques pour l'application.**
     
    6064    - Elle marque le bloc pointé comme `vide`, c'est-à-dire non alloué.
    6165
     66
    6267- **L'allocateur de variables dynamiques pour le noyau.**
    6368  - Le noyau alloue des structures ou des tables pour rendre ses services, pour les threads, les devices drivers, les ressources de synchronisation, le système de fichiers, etc.