Diferença entre mmap e malloc

mmap vs malloc

Há memória dinâmica em C e isso aponta para a alocação de memória na linguagem de programação C por meio de um conjunto de funções presentes na biblioteca padrão C. Um deles é o malloc, que se refere à alocação de memória. No sistema UNIX, há o mmap, que se refere a um sistema mapeado para memória que vem com sua própria E / S exclusiva. Esses dois (mmap e malloc) terão, pelo valor de face, a mesma função, mas um exame mais aprofundado revela algumas diferenças. Essas diferenças, que surgem da funcionalidade, são descritas abaixo.

Diferenças

Primeiramente, é importante estabelecer se há alguma evidência indicando que existe uma sufocação significativa da memória disponível. Isso é feito através da medição do desempenho do programa em relação ao gerenciamento de memória .

A principal interface de alocação de memória é malloc. Este é o maior da biblioteca C. Parte do código de gerenciamento contido nele é mmap. Quando o malloc está em execução, ele reúne todas as instalações do sistema disponíveis. Recursos adicionais do sistema podem ser mobilizados por meio do kernel, que é uma das estratégias de gerenciamento de memória usadas pelos sistemas para garantir que haja alocação de memória satisfatória. O processo não é simples, porém, e foi feito para ser complicado pelo único motivo de impedir as pessoas de criar programas simples que podem desorganizar a alocação de memória e, portanto, criar um desempenho ruim.

'mmap', por outro lado, é uma chamada de sistema que se encarrega e solicita ao kernel que encontre uma região não utilizada e contígua no endereço de um aplicativo que seja grande o suficiente para permitir o mapeamento de várias páginas de memória. Há também a criação de estruturas de gerenciamento de memória virtual que, na verdade, não podem resultar em um segfault.

O Malloc geralmente funciona na maior parte do processo de gerenciamento de memória. Caso o programa exija memória adicional, isso é emprestado do sistema operacional. O Mmap, por outro lado, utiliza uma opção de contexto que se converte em terra de kernel.

O Malloc é mais adequado para alocar memória em qualquer aplicativo em execução no sistema, em oposição ao uso do mmap. Isso é o que é necessário para acontecer por padrão, exceto em casos especiais em que pode ser permitido.

O Mmap pode ser usado para acelerar a resposta dada pelos aplicativos. No entanto, isso não é aconselhável, pois acaba sacrificando alguns bytes para as páginas, para que o aplicativo possa funcionar sem problemas. Embora o conteúdo dos dados possa parecer pequeno no começo, extrapolá-lo quando vários aplicativos desejarem executar pode, na verdade, tornar o sistema mais lento.

Após medir o desempenho e o uso dos recursos, uma avaliação completa do uso de dados por todos os aplicativos em execução no sistema deve ser feita. Se o tempo de vida dos aplicativos em execução puder ser mostrado, pode se tornar melhor.

O uso do mmap para alocar memória traz a desvantagem de que a alocação e desalocação de dados em pedaços é cara. Isso ocorre porque os dados são divididos em várias áreas e também negam que o mmap faça chamadas do sistema.

O Mmap é vantajoso em relação ao malloc porque a memória usada pelo mmap é retornada imediatamente ao sistema operacional. A memória usada pelo malloc nunca é retornada, a menos que haja uma quebra de segmento de dados. Essa memória é especialmente mantida para ser reutilizada.

Sumário

'malloc' significa ponto de alocação de memória principal

Um sistema mmap chama e solicita que um kernel encontre regiões não utilizadas nos endereços de aplicativos, que podem acomodar o mapeamento de várias páginas de memória

O Mmap não é recomendado para alocar memória, pois divide a memória disponível e não pode fazer chamadas do sistema

Um benefício do mmap sobre o malloc é a disponibilidade de memória, em oposição à memória malloc, que é reutilizada.