Changes between Version 9 and Version 10 of AS6-TME-B6


Ignore:
Timestamp:
Mar 26, 2022, 10:58:32 AM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B6

    v9 v10  
    99
    1010- kO6 propose l'API `list` permettant de gérer les listes chaînées
    11   - Cet API est défini dans le fichier `common/list.h` utilisable par le noyau et par l'application
    12   - L'API `list` définit le type `list_t`, structure composée d'un double pointeurs pointant vers d'autres structures du même type.
    13   - L'API
     11  - Cet API est définie dans le fichier `common/list.h` utilisable par le noyau et par l'application.
     12  - L'API `list` chaîne des éléments de liste de type `list_t`, structure composée d'un double pointeurs pointant vers d'autres structures `list_t`.
     13  - Les éléments de liste sont embarqués dans des structures porteuses. Ce sont les éléments de liste qui sont chaînés, mais l'API `list` permet de retrouver le pointeur sur la structure porteuse.
     14  - L'API `list` permet l'ajout et l'extraction d'élément de liste au début, au milieu ou à la fin d'une liste.
     15  - L'API `list` permet le parcours de tous les éléments d'une liste.
    1416- Le code user de l'application (on dira juste application dans la suite) et le noyau ont besoin d'allouer dynamiquement de la mémoire.
    1517- L'application et le noyau disposent chacun d'un segment d'adresse propre, nommés respectivement `.data` et `.kdata`, pour leurs données qui ont été partiellement remplis par des variables globales au moment du chargement en mémoire.
     
    2729- L'allocateur de piles utilisateur et l'allocateur de variables doivent partager la zone libre laissée dans la section `.data`. L'allocateur de pile utilise la partie haute de la section `.data` et l'allocateur de variable utilise la partie basse.
    2830- L'allocateur de pile pour les threads
    29   - C'est le plus simple. Il alloue les piles en réservant un segment de taille fixe (USTACK_SIZE) à partir du haut du segment data, tant que cela n'entre pas en collision avec l'allocateur de variables dynamiques.
     31  - C'est le plus simple. Il alloue les piles en réservant un segment de taille fixe (`USTACK_SIZE` défini dans `common/usermem.h`) à partir du haut du segment data, tant que cela n'entre pas en collision avec l'allocateur de variables dynamiques.
    3032  - Lors de la libération, la pile est mise dans une liste chaînée triée par adresses décroissantes.
    3133  - Lors de l'allocation, la liste de piles libres est consultée en premier, avant de créer une nouvelle pile.