[ c ] Allocation memoire

Résolu
Signaler
Messages postés
173
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
10 mai 2010
-
Messages postés
173
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
10 mai 2010
-
Bonjour,





Je recherche quel serait le meilleur allocateur mémoire pour mon appli embarquée.





J'ai 10 Mo de RAM + flash à gérer dans un décodeur et des paquets de 50 à 150 ko environ à stoker dedans.





J'aimerais mettre en place (ou développer) un allocateur dont le taux de fragmentation reste raisonnable (<30%).





Est ce que vous avez une idée sur un bon allocateur mémoire ou un comparatif des allocateurs existants?





Merci d'avance,


Titi035.

11 réponses

Messages postés
173
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
10 mai 2010

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
malloc. malloc revien à utiliser HeapAlloc mais plus simplement. HeapAlloc est pour les allocation de moin de 2 mo je crois. Sinon VirtualAlloc qui peut faire de grosse allocation mémoire. Va voir sur MSDN pour des renseignement la dessus. Si c'est pas ce que tu cherche, dit avec quel systeme tu programme (linux) ou sabir (.NET)

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Tien voici les lien MSDN pour
HeapCreate
HeapAlloc
HeapDestroy
VirtualAlloc
VirtualFree

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
173
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
10 mai 2010

Salut,



Je fait du C sur une palteforme ST. j'ai une couche driver assez proche d'un Linux.

Mais c'est un OS hybride maison. Donc, j'ai tout à faire concernant
l'allocateur memoire et j'essaie de voir ce qui peut se faire en la
matiere.



J'ai vu que SUN avait developper son propre algo nommé slab allocator,
mais je ne comprends pas bien la difference avec l'allocateur windows
ou linux pas exemple.



Titi035
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Oula tu vien de me perdre completement. Je connais pas bien Linux ni SUN. dsl

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
71
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2007

Sous linux l'appel système pour allouer de la mémoir est brk(). Cette fonction n'est jamais appellée directement et on passe plutot par malloc (qui est défini dans la libraire standart: libc6). Il faudrait voir de quel appel système, tu disposes pour allouer de la mémoire et te basse sur le fonctionnement de malloc pour créer ton propre gestionnaire (Il doit exister des documents qui décrivent son fonctionnement).
Messages postés
173
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
10 mai 2010

Salut,



Est ce que tu aurais des liens sur ces documents STP?



Titi035
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
on peut facilement avoir les sources de malloc. elle sont fournie avec VC98. Mais ya un problème. Dans toute platforme, malloc est redirigé vers la fonction allocatrice du système. Donc malloc en Windows revien a utiliser HeapAlloc et sous Linux brk. Sous Linux ya pas de probleme, les source sont disponible. Mais sous windows, bonne chance. Donc ton allocateur ne pourra pas allouer pour les deux systemes.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
173
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
10 mai 2010

Le but est que ça marche bien déjà avec mon OS maison actuel...
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Bon là je comprend pas tout. Ok. T'a fait une plaforme hybride et tu veut avoir un allocateur de mémoire qui permet d'allouer de la mémoire pour Linux et pour Windows.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
173
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
10 mai 2010

Hello,



Je que j'aimerais trouver, c'est "un comparatif des allocateurs existants".



J'aimerais savoir comment fonctionnent les allocateurs windows, linux, autre OS (vxworks, psos, ...)