Diferença entre mmap e malloc Diferença entre

Anonim

mmap vs malloc

Existe memória dinâmica em C e isso aponta para alocação de memória na linguagem de programação C através de um conjunto de funções presentes na biblioteca padrão C. Um desses é o malloc, que se refere à alocação de memória. No sistema UNIX, há mmap, que se refere a um sistema mapeado de memória que vem com suas próprias E / S únicas. Esses dois (mmap e malloc), no valor nominal, desempenham a mesma função, mas um maior escrutínio revela algumas diferenças. Essas diferenças, decorrentes da funcionalidade, são descritas abaixo.

Diferenças

Em primeiro lugar, é importante estabelecer se há alguma evidência que indique que existe um sufocamento significativo 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 no mesmo é mmap. Quando o malloc está em execução, ele reúne todas as facilidades do sistema disponíveis. As instalações adicionais do sistema podem ser mobilizadas através do kernel, que é uma das estratégias de gerenciamento de memória que os sistemas usam para garantir que haja alocação de memória satisfatória. O processo não é direto, porém, e foi feito para ser complicado pela única razão de impedir que as pessoas criem programas simples que podem desorganizar a alocação de memória e, portanto, criar um desempenho fraco.

'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, de fato, não podem resultar em um segfault.

A Malloc geralmente funciona na maior parte do processo de gerenciamento de memória. No caso de o programa exigir memória adicional, isso é emprestado do sistema operacional. O Mmap, por outro lado, faz uso de um switch de contexto que se converte em terra de kernel.

O Malloc é o mais adequado para a alocação de memória em qualquer aplicativo executado no sistema em oposição ao uso do mmap. Isto é o que é necessário para acontecer por padrão, além de casos especiais, quando isso pode ser permitido.

O Mmap pode ser usado para acelerar a resposta dada por aplicativos. No entanto, isso não é aconselhável, pois acaba sacrificando alguns bytes em páginas para que o aplicativo possa funcionar sem problemas. Embora o conteúdo de dados possa parecer pequeno no início, extrapolá-lo quando inúmeras aplicações quiserem executar podem, de fato, diminuir o ritmo do sistema ainda mais.

Depois de medir o desempenho e o uso de recursos, uma avaliação completa do uso de dados por todos os aplicativos que funcionam no sistema deve ser feita.Se as vidas das aplicações em execução puderem ser mostradas, ela pode se tornar melhor.

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

O Mmap é vantajoso sobre o malloc porque a memória usada pelo mmap é imediatamente retornada ao SO. A memória utilizada pelo malloc nunca é retornada, a menos que haja uma quebra de segmento de dados. Esta memória é especialmente mantida para ser reutilizada.

Resumo

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

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

O Mmap não é recomendado para alocando a memória à medida que divide a memória disponível e não pode fazer chamadas pelo sistema

Um benefício do mmap sobre o malloc é a disponibilidade de memória, ao contrário da memória malloc, que é reutilizada.