Feelin sur AOS4
5 sujets de 16 à 20 (sur un total de 20)
- 1
- 2
-
Moi je connais pas du tout le C++ Si quelqu’un se sent le courage de faire un wrapper…
En ce qui concerne la version AROS, Georg reconnait lui-même que son port est bancal, mais qu’il est là Pitet que ça ira mieux avec la prochaine version. Tetuzo, si tu te sens d’y jeter un oeil, fait le moi savoir. Je t’enverrai un mail pour te dire où récupérer les sources.
@Yomgui: Oui, sauf que là, manifestement cela dépend des flags de mémoire… PS: Yomgui, l’homme qui ne peut pas admettre que le système mémoire de Feelin est trés bien
Yomgui, l’homme qui ne peut pas admettre que le système mémoire de Feelin est trés bien
Ton système d’allocation mémoire ne peux pas remplacer celui de EXEC, du moins je ne pense pas. Ton Feelin il fait quoi ?
Il demande une grosse quantité de mémoire à EXEC qu’il redistribue à la demande ?
Le système mémoire de Feelin est l’équivalent du système de Pool d’EXEC. C’est à dire qu’il alloue de gros bloc de mémoire (puddles) avec AllocMem(), d’où sont alloués de plus petit morceaux. En dehors de ça, le reste du système est complétement neuf.
Parmis les options intéressantes pour le programmeur:
* Mungwall: un mur de protection peut être placé avant et après la mémoire demandée pour vérifier si on n’écrit pas en dehors de la zone autorisée.
* Marquage mémoire: les blocs de mémoire peuvent êtres marqués avec la méthode et la classe d’où ils ont été alloués. e.g. [MaClass/MaMéthode]. Ce qui est très pratique pour trouver les fuites de mémoire
* Les nouvelles allocation de mémoire qui n’ont pas le flag MEMF_CLEAR peuvent être remplies avec 0xABADFEED
* Les allocations mémoire libérées peuvent être remplies avec 0xDEADBEEF.
* Il est impossible de libérer un bloc mémoire qui n’existe pas. Vous pouvez essayer, tout ce que vous obtiendrez c’est un message au journal de Feelin.
* Un système de statistique est inclue pour voir si tout se passe bien, et si le système est performant.
Lorsque vous libérez un bloc, tout ce que vous avez à fournir c’est son pointeur, au contraire d’EXEC qui demande le pointeur vers la pool ainsi que la taille de l’allocation. Feelin doit donc chercher d’où provient le bloc pour pouvoir le supprimer. C’est pourquoi il est impossible de supprimer un bloc mémoire qui n’existe pas.
La majeure différence vient de la façon dont est organisée la mémoire. En effet, à la différence d’EXEC, les puddles ne sont pas liés à la pool à laquelle ils appartiennent, mais sont tous accessibles par une FHashTable. Donc, au lieu de parcourir des milliers de noeuds, pour trouver d’où provient une allocation, j’utilise simplement le hashage. Dans 80% des cas, je tombe directement sur le bon puddle du premier coup, pour le reste la distance maximale constatée et de 2 noeuds, autant dire une économie de temps ENORME.
En plus de cette merveilleuse table de hashage, chaque puddle maintient un pointeur vers l’allocation qui se trouve la plus proche de son centre. Du coup la recherche du bon bloc mémoire peut souvent profiter de ce lien, et diviser par deux le temps de recherche.
—
En ce qui concerne le remplacement du système EXEC, je pense que c’est tout à fait possible. Comme toute chose, il est perfectible.
@grindrou: oui c’est ca!
@Gofromiel: EXEC sur MOS fait cela aussi avec les options de boot qui vont bien.Avec tout le respect que je te dois mon Yom, je doute que MOS marque au fer rouge les allocations mémoires comme le fait Feelin en indiquant d’où provient la demande. Et puis Feelin ne tourne pas que sous MOS et comme ça, tout le monde est content
PS: Je suis très fier de mon système mémoire, c’est mon morceau préféré après les IDs dynamiques et les applications XML.
5 sujets de 16 à 20 (sur un total de 20)
- 1
- 2
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Feelin sur AOS4