Pool mémoire

Page 2 sur 3 Précédente  1, 2, 3  Suivante

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: Pool mémoire

Message par methodiX le Mar 25 Mar - 21:49

Si on vous demande d'utiliser le pool de mémoire pour allouer de l'espace pour plusieurs variable V1, V2, ...., Vn, de tailles respectives t1, t2, ..., tn. Comment tu fais?
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par manianis le Mar 25 Mar - 22:06

Le but :
Que faire précisément ?
- 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.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par Timon le Mar 25 Mar - 22:51

Comme je l'ai déjà dit : le pool mémoire est surtout utilisé pour n'allouer qu'un seul et unique type de donnée. La taille de ce qu'il faut allouer ne peut pas varier. C'est ce qui le rend puissant.
Je crois qu'il va falloir que je donne les prototypes des fonctions publiques à construire pour rendre les choses plus claires.

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par manianis le Mar 25 Mar - 22:53

Merci, comme çà on avancera un pas.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par Timon le Mar 25 Mar - 23:09

Bien, je reprend l'exemple original de la donnée à allouer :
Code:
typedef
struct
{
  int valeur;
}
Donnee;


Il nous faut donc un constructeur de pool :
Code:
Pool *pool_creer(size_t nb_donnees);

Il construit un pool de nb_donnees objets de type Donnee. Il n'est pas nécessaire que l'appelant sache de quoi est composé le type Pool.
Il faut aussi un destructeur :
Code:
void pool_detruire(Pool *p_pool);

Le but de cette fonction est clair, je pense.

On aborde maintenant ce qui est intéressant :
Code:
Donnee *pool_allouer_donnee(Pool *p_pool);

qui renvoie l'adresse d'un seul objet de type Donnee ou NULL si le pool n'a plus de place.
Code:
void pool_liberer_donnee(Pool *p_pool, Donnee *p_donnee);

permet au pool de considérer que cet objet n'est plus référencé par l'appelant. Il peut donc être "réalloué" lors d'un prochain appel de pool_allouer_donnee().

Comme vous le voyez, il n'y a rien de bien compliqué. Smile

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par nabiL le Mer 26 Mar - 9:04

Pourquoi tu travailles uniquement avec des objets Donnees ?
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par Timon le Mer 26 Mar - 9:28

nabiL a écrit:Pourquoi tu travailles uniquement avec des objets Donnees ?

Parce que le pool mémoire n'est fait que pour allouer des objets de même taille :
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.

Cela peut rendre la création et la destruction de listes chaînées, arbres, etc. plus rapides.

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par methodiX le Mer 26 Mar - 22:28

Fixer la taille de Donnees et varier le nombre de variables de type Donnees cause de la fragmentation aussi.
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par Timon le Mer 26 Mar - 22:53

methodiX a écrit:Fixer la taille de Donnees et varier le nombre de variables de type Donnees cause de la fragmentation aussi.

Il ne peut pas y avoir fragmentation puisqu'on ne peut allouer qu'un élément à la fois.

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par nabiL le Jeu 27 Mar - 8:38

Ou bien
je n'ai pas bien lu (donc mal compris) la notion de Pool
Ou bien
tu n'as pas bien expliqué cette notion (ça m'étonne)
Ou bien
il y a quelques choses qui cloche ...

Smile
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par Timon le Jeu 27 Mar - 17:56

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ù.

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par Timon le Dim 30 Mar - 12:06

A vrai dire, je ne vois pas ce qui ne vous paraît pas clair. Neutral

Timon
Membre important
Membre important

Sexe:Masculin
Messages : 57
Inscrit le : 14 Jan 2008
Localisation : France

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par nabiL le Dim 30 Mar - 20:07

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.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par manianis le Dim 30 Mar - 22:32

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
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Pool mémoire

Message par nabiL le Lun 31 Mar - 8:20

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.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Page 2 sur 3 Précédente  1, 2, 3  Suivante

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum