Pool mémoire
4 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 2 sur 2
Page 2 sur 2 • 1, 2
Pool mémoire
Rappel du premier message :
Bonjour,
Je vous propose un sujet sur lequel je me suis penché récemment et qui s'avère intéressant bien que simple.
Il s'agit de créer un pool mémoire. Qu'est-ce donc ?
C'est une large zone de mémoire qu'on alloue dans laquelle on va procéder nous-même aux allocations pour un type de donnée précis.
Il faut donc d'abord avoir un type de donnée que l'on va avoir à allouer plusieurs fois. Exemple :
- Allouer un gros bloc de mémoire
- Le préparer pour qu'il soit prêt à accueillir plusieurs objets de type 'Donnee'
- Construire une fonction qui y "alloue" un objet de type 'Donnee' et qui renvoie son adresse ou NULL s'il n'y a plus de place dans le pool
- Construire une fonction qui "libère" un objet
- Enfin, construire une fonction qui libère le bloc de mémoire
Bien entendu, on peut produire quelques variantes mais c'est l'idée générale.
Maintenant, à votre avis, en quoi est-ce utile ?
Bonjour,
Je vous propose un sujet sur lequel je me suis penché récemment et qui s'avère intéressant bien que simple.
Il s'agit de créer un pool mémoire. Qu'est-ce donc ?
C'est une large zone de mémoire qu'on alloue dans laquelle on va procéder nous-même aux allocations pour un type de donnée précis.
Il faut donc d'abord avoir un type de donnée que l'on va avoir à allouer plusieurs fois. Exemple :
- Code:
typedef
struct
{
int valeur;
}
Donnee;
- Allouer un gros bloc de mémoire
- Le préparer pour qu'il soit prêt à accueillir plusieurs objets de type 'Donnee'
- Construire une fonction qui y "alloue" un objet de type 'Donnee' et qui renvoie son adresse ou NULL s'il n'y a plus de place dans le pool
- Construire une fonction qui "libère" un objet
- Enfin, construire une fonction qui libère le bloc de mémoire
Bien entendu, on peut produire quelques variantes mais c'est l'idée générale.
Maintenant, à votre avis, en quoi est-ce utile ?
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 6162
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Pool mémoire
Prenons une forme simple du pool.
C'est un simple tableau d'objets Donnee. Il est déjà désigné en tant que tel.
On va "distribuer" ses éléments au fur et à mesure sans jamais en donner plus d'un à la fois.
C'est pour quoi il n'y a pas de risque de fragmentation : le nombre d'éléments qu'on peut allouer en tout dans le pool à tout instant reste le même et les "allocations" ne peuvent pas se faire n'importe où.
C'est un simple tableau d'objets Donnee. Il est déjà désigné en tant que tel.
On va "distribuer" ses éléments au fur et à mesure sans jamais en donner plus d'un à la fois.
C'est pour quoi il n'y a pas de risque de fragmentation : le nombre d'éléments qu'on peut allouer en tout dans le pool à tout instant reste le même et les "allocations" ne peuvent pas se faire n'importe où.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 6162
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Pool mémoire
A vrai dire, je ne vois pas ce qui ne vous paraît pas clair.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 6162
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Pool mémoire
Je pense qu'il faut présenter l'information autrement... hélas j'ai pas le temps. Sinon, j'aurais fait plus d'effort pour reformuler l'énoncé sans paraphraser le texte biensûr.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Pool mémoire
Wikipedia a écrit:Memory pools allow dynamic memory allocation comparable to malloc or C++'s operator new. As those implementations suffer from fragmentation because of variable block sizes, it can be impossible to use them in a real time system due to performance. A more efficient solution is preallocating a number of memory blocks with the same size called the memory pool.
Pourtant c'est clair.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Pool mémoire
C'est du texte concentré qui présente des idées très importante. Ca ne peut pas être décrit en quelques mots. Si j'aurais l'occasion de présenter ça un ensemble de personnes (des étudiants par exemple) j'aurai procédé autrement.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Pool mémoire
nabiL a écrit:C'est du texte concentré qui présente des idées très importante. Ca ne peut pas être décrit en quelques mots. Si j'aurais l'occasion de présenter ça un ensemble de personnes (des étudiants par exemple) j'aurai procédé autrement.
Vous avez raison c'est un texte encyclopédique mais çà indique du moins l'utilité des pools tout en expliquant les inconvénients de leurs soeurs malloc et new.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Pool mémoire
C'est un fait, si j'avais voulu écrire un article sur ce sujet, je n'aurais pas non plus pris cette approche mais, à l'origine, je voulais en faire un exercice...nabiL a écrit:Si j'aurais l'occasion de présenter ça un ensemble de personnes (des étudiants par exemple) j'aurai procédé autrement.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 6162
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Page 2 sur 2 • 1, 2
Sujets similaires
» memoire
» gestion de memoire
» Allocation/libération dynamique de mémoire en pascal
» tourisme saharien en tunisie; memoire fin d'etude
» Quelle est la meilleur méthode pour réussir un travail de recherche scientifique(article, mémoire, thèse,..)???
» gestion de memoire
» Allocation/libération dynamique de mémoire en pascal
» tourisme saharien en tunisie; memoire fin d'etude
» Quelle est la meilleur méthode pour réussir un travail de recherche scientifique(article, mémoire, thèse,..)???
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 2 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum