10 | | - L'application et le noyau ont besoin |
11 | | |
| 10 | - L'application et le noyau ont besoin d'allouer dynamiquement de la mémoire. |
| 11 | - Chacun dispose d'une segment d'adresse pour ses données partiellement remplis par des variables globales. |
| 12 | - L'idée est d'utiliser cet espace libre pour y mettre des variables dynamiques. |
| 13 | - L'application a en fait 2 besoins d'allocation dynamiques distincts : |
| 14 | 1. l'allocation de variables dynamiques et |
| 15 | 1. l'allocation de piles pour les threads de l'application. |
| 16 | - Les différences entre ces deux types de types d'allocation sont les suivantes : |
| 17 | - Les variables dynamiques sont allouées par le programmes en fonction de ces besoins, les tailles des variables sont quelconques, de quelques octets à plusieurs mégaoctets (tant que c'est possible dans la mémoire disponible). |
| 18 | - 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 de taille fixe (dans un vrai système, on peut les choisir leur taille, mais pas pour kO6) |
| 19 | - Nous avons donc 3 allocateurs dans kO6 : |
| 20 | - 1 allocateur de piles utilisateurs |
| 21 | - 1 allocateur de variables dynamiques pour l'application |
| 22 | - 1 allocateur de variables dynamiques pour le noyau |
| 23 | |
| 24 | (pas fini) |