Précédent   Forum des professionnels en informatique > Autres langages > Algorithmes
Algorithmes Forum d'entraide sur l'algorithmique, l'intelligence artificielle, le traitement numérique d'images et les mathématiques. Avant de poster : Cours d'algorithmique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 14h23   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 39
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 39
Points : 19
Points : 19
Par défaut Algo Malloc en C

Bonjour a tous,

Dans le cadre d'un projet, je dois recoder le malloc en langage C
Je cherche un algo rapide et simple a implementer, avez vous une idee ?
soryo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h13   #2
Membre Expert
 
Avatar de prgasp77
 
Homme Yankel Scialom
Ingénieur en systèmes embarqués
Inscription : juin 2004
Messages : 812
Détails du profil
Informations personnelles :
Nom : Homme Yankel Scialom
Âge : 25
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Ingénieur en systèmes embarqués
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juin 2004
Messages : 812
Points : 1 039
Points : 1 039
Bonjour, j'ai une solution simple :
Chaque allocation sera, en interne, représentée par un bloc en-tête et un bloc données, tous deux adjacents.

L'en-tête, de taille fixe, contient la taille du bloc de données, l'état du bloc (libre ou réservé), l'adresse (relative) du bloc en-tête précédent et celle du bloc suivant.

Ainsi, le gestionnaire de mémoire n'a que peu d'opérations à faire :
  1. Initialisation
    • Créer un segment mémoire (partagée / dans un fichier / managée / ...) ;
    • Créer le bloc en-tête maître {size=taille_segment - taille_d_un_en_tete; free=true; previous=NULL; next=NULL}
  2. Allocation
    • Recherche d'un bloc libre de taille suffisante : depuis le bloc maître, tant que bloc_courant.free=false && size<taille_a_allouer+taille_d_un_en_tete, passer au bloc suivant.
    • Réservation du bloc : LAL
  3. Désalocation : LAL aussi, mais attention au piège, il faut fusionner les blocs libres contigüs .


N'hésite pas à partager ton gestionnaire de mémoire une fois cela fait. Si tu as accès à un compilateur C++, tu peux aussi l'encapsuler dans la classe std::Alocator qui permet de gérer la mémoire interne des std::vector, std::map, etc.

Cdlt,
__________________
gasp in touch
-- Yankel Scialom
prgasp77 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 15h31   #3
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 418
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 39
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 418
Points : 14 121
Points : 14 121
Des algos il y en a plein.

Je conseille de lire le document "Dynamic memory allocation" de 'Alan L. Cox' pour se faire une idée sur l'implémentation d'un allocateur utilisant les free-list.

Sinon, pour la beauté de l'algorithme, je conseille la technique de "Buddy memory allocation".
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/01/2012, 17h16   #4
Futur Membre du Club
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 39
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 39
Points : 19
Points : 19
Merci !

je n'ai le droit que d'utiliser brk et sbrk, pensez vous que le first fit est une bonne solution ?
soryo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h11.


 
 
 
 
Partenaires

Hébergement Web