Ecco una risposta parziale, forse sarà d'aiuto.
Linux divide lo spazio di indirizzo virtuale del kernel in due parti: lowmem e vmalloc.
Lowmem utilizza una mappatura 1-1 tra indirizzi virtuali e fisici. Cioè l'indirizzo virtuale X è mappato all'indirizzo fisico X-C (dove C è costante, ad esempio 3 GB). Questa mappatura viene creata durante l'avvio e non viene mai modificata.
Vmalloc utilizza una mappatura dinamica, su richiesta. Su ogni allocazione, vengono trovate un mucchio di pagine fisiche e un intervallo di indirizzi virtuali e le tabelle di paging vengono modificate per creare la mappatura.
Due due sono separati da indirizzi virtuali. Diversi intervalli di indirizzi virtuali vengono utilizzati da ciascuno. L'intervallo lowmem viene sempre mappato, l'intervallo vmalloc viene mappato quando allocato.
Leggermente datato, ma ancora rilevante: http://www.tldp.org/LDP/tlk/mm/memory.html. –
Qual è il tuo problema attuale? –
http://books.msspace.net/mirrorbooks/linuxsystems/images/059600222X/figs/bels_0206.gif – MDMoore313