Quelle est la différence entre vmalloc et kmalloc?

J'ai googlé autour et a trouvé la plupart des gens prônant l'utilisation de kmalloc, comme vous êtes garanti d'obtenir contiguë physique des blocs de mémoire. Cependant, il semble également que si kmalloc peut échouer si une zone contiguë de physique bloc que vous voulez ne peut pas être trouvé.

Quels sont les avantages d'avoir un bloc contigu de mémoire? Plus précisément, pourquoi aurais-je besoin d'avoir une ligne de physique bloc de mémoire dans un appel système? Est-il une raison que je ne pouvais pas l'utiliser vmalloc?

Enfin, si j'étais à allouer de la mémoire en cours de traitement d'un appel système, dois-je préciser GFP_ATOMIC? Est un appel système exécuté dans un atomique contexte?

GFP_ATOMIC

L'allocation est de haute priorité et
ne pas dormir. C'est le drapeau de
l'utilisation de gestionnaires d'interruption, bas
les moitiés et les autres situations où vous
ne peut pas dormir.

GFP_KERNEL
C'est une répartition normale et pourrait bloquer. C'est le drapeau à utiliser
dans le contexte de processus de code quand il est sécuritaire de sommeil.

InformationsquelleAutor FreeMemory | 2008-09-22