Changes between Version 68 and Version 69 of AS6-TME-B6
- Timestamp:
- Mar 24, 2025, 12:48:17 PM (2 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AS6-TME-B6
v68 v69 108 108 - 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. 109 109 - Nous appelons ces structures et ces tables des objets (pour leur donner un nom différent de bloc), les objets ont un nombre entier de lignes de cache. Le noyau doit pouvoir allouer et libérer ses objets très rapidement. 110 - L'API de cet allocateur est `void * kmalloc(size_t)` et `void free(void * , size_t)`110 - L'API de cet allocateur est `void * kmalloc(size_t)` et `void free(void *)` 111 111 - `void * kmalloc(size)` (politique de remplissable `slab`) 112 112 - L'allocateur d'objets du noyau gère un tableau de listes d'objets libres de même taille. … … 115 115 - Il découpe la dalle en autant d'objets que possible de la taille `T` demandée et il chaîne ces objets pour remplir la liste d'objets libres. 116 116 - Pour allouer un objet, l'allocateur prend le premier objet de la liste des objets libres de la bonne taille. 117 - `void kfree(void * , size_t)`117 - `void kfree(void *)` 118 118 - Pour libérer un objet, l'allocateur se contente de le remettre au début de la liste des objets libres de la bonne taille donnée en argument. 119 119 - Lors de la libération d'un objet, il peut s'avérer que tous les objets d'une dalle X sont libres. Dans ce cas, l'allocateur retire de la liste d'objets libres tous les objets appartenant à la dalle X et il rend cette dalle à la liste des dalles libres. … … 266 266 ''' 267 267 }}} 268 1. Pour libérer un objet alloué par l'allocateur d'objets du noyau, on utilise la fonction `kfree()` qui prend en argument le pointeur alloué par `kmalloc()` et la taille allouée. Pourquoidemander la taille ? Est-ce une contrainte ?268 1. Pour libérer un objet alloué par l'allocateur d'objets du noyau, on utilise la fonction `kfree()` qui prend en argument le pointeur alloué par `kmalloc()`. Pourquoi nepasdemander la taille ? Est-ce une contrainte ? 269 269 {{{#!protected ------------------------------------------------------------------ 270 270 '''