Changes between Version 68 and Version 69 of AS6-TME-B6


Ignore:
Timestamp:
Mar 24, 2025, 12:48:17 PM (2 months ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B6

    v68 v69  
    108108  - 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.
    109109  - 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 *)`
    111111  - `void * kmalloc(size)` (politique de remplissable `slab`)
    112112    - L'allocateur d'objets du noyau gère un tableau de listes d'objets libres de même taille.
     
    115115    - 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.
    116116    - 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 *)`
    118118    - 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.
    119119    - 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.
     
    266266'''
    267267}}}
    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. Pourquoi demander la taille ? Est-ce une contrainte ?
     2681. 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 ?
    269269{{{#!protected ------------------------------------------------------------------
    270270'''