Pool mémoire

Page 1 sur 3 1, 2, 3  Suivante

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

Pool mémoire

Message par Timon le Jeu 20 Mar - 0:04

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;

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.

Maintenant, à votre avis, en quoi est-ce utile ?

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 23 Mar - 1:36

Ah, dommage... Ce sujet ne semble pas aussi intéressant/simple que je le pensais. 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 manianis le Dim 23 Mar - 11:07

Pourquoi vous êtes ci rapide pour juger le problème le C/C++ permet de redéfinir les fonctions d'allocation/de libération de mémoire new et delete. Donc c'est faisable. J'avais un livre qui traitait cela en Turbo C++ mais j'ai oublié où est-ce que je l'ai caché.

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 Dim 23 Mar - 11:34

Je ne demande pas de solution ! Very Happy Je ne fais que proposer cela comme exercice.

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 Dim 23 Mar - 14:11

Maintenant, à votre avis, en quoi est-ce utile ?


Bon à mon avis, ça sert comme une initiation à l'allocation dynamique de la mémoire. Ca peut se donner comme mini-projet: ré-implémentation des fonctions d'allocation ou désallocation de la mémoire.

non, Timon?
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 Dim 23 Mar - 15:08

methodiX a écrit:Bon à mon avis, ça sert comme une initiation à l'allocation dynamique de la mémoire.
[...]
non, Timon?

En effet, mais heureusement, ça ne se limite pas qu'à ça ! 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 methodiX le Dim 23 Mar - 17:22

De plus, on peut gagner la gestion personnalisée de la mémoire Smile
Protéger ses propres zones, partage et swap de mémoire ...
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 Dim 23 Mar - 23:38

methodiX a écrit:De plus, on peut gagner la gestion personnalisée de la mémoire Smile

Oui, on y gagne par exemple lorsque l'on sait dès le départ combien de données maximum seront allouées à tout instant. Grâce au pool mémoire, on est alors certain que l'allocation réussira. Bien entendu, si on n'en a aucune idée, l'allocation réussira seulement tant que le pool ne sera pas plein.
De plus, il n'y a pas de risque de fragmentation puisque toutes les données ont dans le pool (en général) la même taille. On utilise donc cette zone mémoire au mieux.
Enfin, on profite aussi d'une allocation quasiment instantanée puisqu'on sait précisément (ou presque) où il y a de la place.

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 Lun 24 Mar - 14:16

Salut Timon:
L'idée m'a beaucoup plu. Cependant, l'histoire de la fragmentation de la mémoire n'a pas été bien abordée. On sera toujours face à un problème de réorganisation de la mémoire, si on fait plusieurs allocations/désallocations de variables dynamiques dans le pool.

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

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
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 Lun 24 Mar - 15:43

Il ne peut pas y avoir fragmentation puisqu'on n'admet l'allocation que d'un type de donnée.
On pourrait considérer qu'il y a fragmentation si on cherche à allouer des tableaux. Or, le pool mémoire n'est pas adapté pour ça. Il me semble que l'on parle sinon de memory chunk.

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 Lun 24 Mar - 17:08

Qu'appelles-tu "Type de donnée" ? Donner des exemples pour qu'on puisse parler le même langage.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
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 Lun 24 Mar - 17:27

nabiL a écrit:Qu'appelles-tu "Type de donnée" ? Donner des exemples pour qu'on puisse parler le même langage.

J'en ai déjà donné un. Wink
Code:
typedef
struct
{
  int valeur;
}
Donnee;

Le pool mémoire ne contiendra que des objets Donnee.

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 - 21:16

Et le code ? Ou est-ce qu'il est dans tout cela ?

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 methodiX le Mar 25 Mar - 21:19

Quel code manianis?

Timon: int valeur ==> pour stocker quoi? une @mémoire? J'ai pas bien digéré l'histoire. Je suis un peu loin de l'informatique!
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 Mar 25 Mar - 21:31

methodiX a écrit:Timon: int valeur ==> pour stocker quoi? une @mémoire? J'ai pas bien digéré l'histoire. Je suis un peu loin de l'informatique!

C'est un exemple.
J'aurais pu mettre autre chose. Par exemple, simplement :
Code:
typedef int Donnee;

voire indiquer que la donnée est d'un tout autre type !
Ce qu'est Donnee, on s'en fiche. C'est l'objet lui-même qui importe.
L'objectif est de donner au fur et à mesure des objets de ce type à l'appelant, tant que le pool mémoire le permet.

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

Page 1 sur 3 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