wiki:AS6-TME-B6

Version 5 (modified by franck, 2 years ago) (diff)

--

Allocation dynamique de mémoire

Vous pouvez lire les slides de cours pour voir les détails, mais voici le résumé des principes en quelques lignes.

  • 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.
  • 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.
  • L'idée est d'utiliser l'espace libre de ces segments data pour y mettre des variables dynamiques.
  • L'application a en fait 2 besoins distincts d'allocation dynamiques :
    1. l'allocation de variables dynamiques de l'application,
    2. l'allocation de piles pour les threads de l'application.
  • Les différences entre ces deux types de types d'allocation sont les suivantes :
    • D'un côté, les variables dynamiques sont allouées par l'application en fonction de ses besoins. La taille des variables est quelconque, allant de quelques octets à plusieurs mégaoctets (tant que c'est possible dans la mémoire disponible).
    • 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 les choisir leur taille, mais pas pour kO6).
  • Nous avons donc 3 allocateurs dans kO6 :
    • 1 allocateur de piles utilisateurs
    • 1 allocateur de variables dynamiques pour l'application
    • 1 allocateur de variables dynamiques pour le noyau

(pas fini)

A. Questions de cours

La majorité des réponses aux questions sont dans le cours ou dans le rappel du cours donné au début de cette page, c'est voulu. Les questions suivent à peu près l'ordre du cours, elles sont simples, mais vous avez besoin de comprendre le cours pour y répondre :-) Quand une question vous demande si quelque chose est vrai ou faux, ne répondez pas juste "oui" ou "non », mais justifiez vos réponses avec une petite phrase. Le but de ces questions est d'évaluer vos connaissances, donc plus vous êtes précis, mieux c'est.

B. Travaux pratiques