Ich habe herumgegoogelt und festgestellt, dass die meisten Leute die Verwendung von befürworten kmalloc
, da Sie garantiert zusammenhängende physische Speicherblöcke erhalten. Es scheint jedoch auch so, als ob kmalloc
es fehlschlagen kann, wenn ein zusammenhängender physischer Block, den Sie möchten, nicht gefunden werden kann.
Was sind die Vorteile eines zusammenhängenden Speicherblocks? Warum sollte ich in einem Systemaufruf einen zusammenhängenden physischen Speicherblock benötigen ? Gibt es einen Grund, den ich nicht einfach benutzen könnte ?
Wenn ich schließlich während der Bearbeitung eines Systemaufrufs Speicher zuweisen sollte, sollte ich angeben ? Wird ein Systemaufruf in einem atomaren Kontext ausgeführt?vmalloc
GFP_ATOMIC
GFP_ATOMIC
Die Zuweisung hat hohe Priorität und schläft nicht. Dies ist das Flag, das in Interrupt-Handlern, unteren Hälften und anderen Situationen verwendet wird, in denen Sie nicht schlafen können.
GFP_KERNEL
Dies ist eine normale Zuordnung und kann blockieren. Dies ist das Flag, das im Prozesskontextcode verwendet werden soll, wenn der Schlaf sicher ist.
vmalloc
ist schneller mit Kernel 5.2 (Q2 2019)