[ c ] Allocation memoire

Résolu
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010 - 7 avril 2006 à 17:39
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010 - 10 avril 2006 à 10:13
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

titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
10 avril 2006 à 10:13
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 avril 2006 à 18:06
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 avril 2006 à 22:59
Tien voici les lien MSDN pour
HeapCreate
HeapAlloc
HeapDestroy
VirtualAlloc
VirtualFree

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
8 avril 2006 à 02:17
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 avril 2006 à 04:13
Oula tu vien de me perdre completement. Je connais pas bien Linux ni SUN. dsl

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
Bel0 Messages postés 71 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 14 septembre 2007
9 avril 2006 à 00:28
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).
0
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
9 avril 2006 à 06:26
Salut,



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



Titi035
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 avril 2006 à 14:55
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
0
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
9 avril 2006 à 17:02
Le but est que ça marche bien déjà avec mon OS maison actuel...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 avril 2006 à 17:29
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
0
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
9 avril 2006 à 18:57
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, ...)
0
Rejoignez-nous