2010-12-04 7 views
2

Possible en double:
What is the difference between vmalloc and kmalloc?Quelle est la principale différence entre kmalloc et vmalloc?

S'il vous plaît dire en détail explication

+0

cody Gray, avant de poster cette question je ne regarde pas que cette iste? – Muthuraman

+1

En ce qui concerne votre dernier commentaire, dites-vous que vous avez posté cette question avant de chercher sur ce site, ou posez-vous une question? S'il y a quelque chose que la question à laquelle je suis lié reste sans réponse, veuillez éditer votre question. Sinon, je m'attends à ce que cela se referme assez rapidement. –

+0

@Cody Gray: j'ai besoin de détails sur la comparaison d'allocation de mémoire .... – Muthuraman

Répondre

2

kmalloc alloue de la mémoire physique contiguë, mémoire qui pages sont disposées consécutivement dans la RAM physique. vmalloc alloue mémoire qui est contiguë dans l'espace mémoire virtuel du noyau (ce qui signifie que pages allouées de cette manière ne sont pas contiguës en RAM, mais le noyau les voit comme un seul bloc).

kmalloc est la méthode préconisée, à condition que vous n'ayez pas besoin de très grandes zones . Le problème est, si vous voulez faire DMA de/vers un périphérique matériel, vous aurez besoin d'utiliser kmalloc, et vous aurez probablement besoin de plus gros morceau . La solution consiste à allouer de la mémoire dès que possible, avant que la mémoire soit fragmentée.

Si vous n'allouez que de petits blocs (page ou quelques pages), utilisez simplement kmalloc et ne vous souciez pas des détails. :)

réponse ci-dessus a été copié de la source - http://kerneltrap.org/node/4020

+1

Source: http://kerneltrap.org/node/4020 –

1

retourne kmalloc mémoire physique contiguë, mémoire kmalloc est réservé et verrouillé, il ne peut pas être échangé, la mémoire est soumise à la fragmentation, si vous n'a pas besoin de mappage contigu dans l'espace noyau, vous pouvez utiliser vmalloc à éviter le problème de fragmentation.