Différence entre mmap et malloc

mmap vs malloc

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

Différences

Tout d'abord, il est important d'établir s'il existe des preuves indiquant que la mémoire disponible est considérablement étouffée. Cela se fait par la mesure des performances 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 regroupe toutes les installations système disponibles. Des ressources système supplémentaires peuvent être mobilisées via le noyau, qui est l'une des stratégies de gestion de la mémoire utilisées par les systèmes pour garantir une allocation de mémoire satisfaisante. Le processus n’est cependant pas simple et a été rendu compliqué dans le seul but d’empêcher les utilisateurs de créer des programmes simples susceptibles de désorganiser l’allocation de mémoire et, partant, d’engendrer de mauvaises performances..

'mmap', en revanche, est un appel système qui prend en charge et demande au noyau de trouver dans l'adresse d'une application une région contiguë et contigue suffisamment grande pour permettre le mappage de plusieurs pages de mémoire. Il existe également la création de structures de gestion de mémoire virtuelle qui, en réalité, ne peuvent pas créer une erreur de segmentation..

Malloc fonctionne généralement dans la plupart des processus de gestion de la mémoire. Si 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 terrain noyau.

Malloc est le mieux adapté pour allouer de la mémoire dans toute application exécutée sur le système, par opposition à l'utilisation de mmap. C’est ce qui doit être fait par défaut, sauf dans des cas particuliers où cela peut être autorisé..

Mmap peut être utilisé pour accélérer la réponse donnée par les applications. Cela n’est toutefois pas conseillé, car il finit par sacrifier quelques octets à des pages afin que l’application puisse s’exécuter sans à-coups. Bien que le contenu des données puisse sembler limité au début, son extrapolation lorsque de nombreuses applications veulent s'exécuter peut en réalité ralentir davantage le système..

Après avoir mesuré les performances et l'utilisation des ressources, vous devez procéder à une évaluation approfondie de l'utilisation des données par toutes les applications exécutées sur le système. Si la durée de vie des applications en cours d'exécution peut être montrée, cela peut devenir meilleur.

L'utilisation de mmap pour l'allocation de mémoire présente l'inconvénient que l'allocation et la désallocation de données en morceaux sont coûteuses. En effet, les données sont divisées en de nombreux domaines et empêchent également mmap de faire des appels système..

Mmap est avantageux par rapport à malloc car la mémoire utilisée par mmap est immédiatement renvoyée au système d'exploitation. La mémoire utilisée par malloc n'est jamais renvoyée, sauf en cas de rupture de segment de données. Cette mémoire est spécialement conservée pour être réutilisée.

Résumé

'malloc' représente le point d'allocation de mémoire principal

Un système mmap appelle et demande à un noyau de trouver des régions inutilisées dans les adresses d'application, ce qui peut permettre 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 effectuer d'appels système.

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