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


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

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B6

    v8 v9  
    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.
    99
     10- 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
    1014- 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.
    1115- 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.
     
    2226  - 1 allocateur de variables dynamiques pour le noyau
    2327- 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.
    24 - L'allocateur de pile est le plus simple. Il alloue les piles en réservant un segment de taille fixe (THREAD_
     28- 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.
     30  - Lors de la libération, la pile est mise dans une liste chaînée triée par adresses décroissantes.
     31  - Lors de l'allocation, la liste de piles libres est consultée en premier, avant de créer une nouvelle pile.
     32  - Le tri des piles libres permet d'augmenter la probabilité d'usage des piles placées en haut du segment `.data`.
     33  - Quand une pile est libérée et qu'elle est la plus basse en adresse. Le segment qu'elle occupait est rendu au noyau.
     34- L'allocateur de variable dynamique pour l'application
     35  - Cet allocateur dispose d'un segment d'adresse libre aligné sur les lignes de caches.
     36  - L'allocateur gère des blocs.
     37    - Un bloc est un segment d'adresse aligné sur les lignes de caches.
     38    - Un bloc peut être :
     39
     40
    2541
    2642(pas fini)