Différence entre mmap et malloc


mmap ou malloc

Il y a de la mémoire dynamique en C et ceci indique l'allocation de mémoire dans le langage de programmation C à travers un ensemble de fonctions présentes dans la bibliothèque C standard. L'un d'entre eux est malloc, qui fait référence à l'allocation de mémoire. Dans le système UNIX il y a mmap, qui se réfère à un système mappé en mémoire qui vient avec sa propre E/S unique. Ces deux (mmap et malloc) rempliront à première vue la même fonction, mais un examen plus approfondi révèle certaines différences. Ces différences, qui découlent de la fonctionnalité, sont décrites ci-dessous.

Différences

Tout d'abord, il est important d'établir s'il existe des preuves indiquant qu'il y a un étouffement significatif de la mémoire disponible. Cela se fait par la mesure de la performance du programme par rapport à la gestion de la mémoire.

L'interface d'allocation de mémoire principale est malloc. C'est le plus grand de la bibliothèque C. Une partie du code de gestion qu'il contient est mmap. Lorsque malloc est en cours d'exécution, il rassemble toutes les installations système disponibles. Des installations système supplémentaires peuvent être mobilisées par l'intermédiaire du noyau, qui est l'une des stratégies de gestion de la mémoire que les systèmes utilisent pour s'assurer que l'allocation de mémoire est satisfaisante. Le processus n'est pas simple, cependant, et a été rendu compliqué pour la seule raison d'empêcher les gens de créer des programmes simples qui peuvent désorganiser l'allocation de mémoire et donc créer de mauvaises performances.

mmap' est un appel système qui prend en charge et demande au noyau de trouver une région inutilisée et contiguë dans l'adresse d'une application qui est suffisamment grande pour permettre le mappage de plusieurs pages de mémoire. Il y a aussi la création de structures de gestion de la mémoire virtuelle qui, en fait, ne peuvent pas donner lieu à une erreur de segmentation.

Malloc fonctionne généralement dans la plupart des processus de gestion de la mémoire. Dans le cas où le programme nécessite de la mémoire supplémentaire, celle-ci est empruntée au système d'exploitation. Mmap, d'autre part, utilise un commutateur de contexte qui se convertit en kernel land.

Malloc est le mieux adapté à l'allocation de mémoire dans n'importe quelle application fonctionnant sur le système par opposition à l'utilisation de mmap. C'est ce qui doit se produire par défaut, sauf dans des cas particuliers où cela peut être permis.

Mmap peut être utilisé pour accélérer la réponse donnée par les applications. Ceci n'est cependant pas conseillé car il finit par sacrifier quelques octets aux pages pour que l'application puisse fonctionner sans problème. Bien que le contenu des données puisse sembler faible au début, l'extrapolation lorsque de nombreuses applications veulent s'exécuter peut en fait ralentir encore davantage le système.

Après avoir mesuré les performances et l'utilisation des ressources, une évaluation approfondie de l'utilisation des données par toutes les applications exécutées sur le système devrait être effectuée. Si la durée de vie des applications exécutées peut être démontrée, elle peut devenir meilleure.

L'utilisation de mmap pour allouer de la mémoire présente l'inconvénient que l'allocation et la désaffectation des données en morceaux est coûteuse. Ceci est dû au fait que les données sont divisées en plusieurs zones et empêche mmap d'effectuer des appels système.

Mmap est plus avantageux que malloc car la mémoire utilisée par mmap est immédiatement retournée au système d'exploitation. La mémoire utilisée par malloc n'est jamais retournée à moins qu'il y ait un segment de données cassé. Cette mémoire est spécialement conservée pour être réutilisée.

Les idées Clis


malloc' est l'abréviation de point d'allocation de la mémoire principale

Un système mmap appelle et demande à un noyau de trouver les régions inutilisées dans les adresses des applications qui peuvent accommoder le mappage de plusieurs pages de mémoire.

Mmap n'est pas recommandé pour l'allocation de mémoire car il divise la mémoire disponible et ne peut pas passer d'appels système.

Un avantage de mmap par rapport à malloc est la disponibilité de la mémoire, par opposition à la mémoire malloc, qui est réutilisée.


Une question ? Nous avons oublié quelque chose ? n'hésitez pas à participer aux commentaires. Nous compléterons cet article avec plaisir.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *